用作函数参数时的等待函数在函数运行之前无法解析

问题描述 投票:0回答:1

以下代码使用async / await按预期工作:

try {
       let feedbacks = await feedbackService.get(this.feedBackOdataModel);
        this.feedBackJsonModel.setProperty('/Avaliacoes', feedbacks.results);


        } catch (error) {
            dialogService.showErrorDialog("Erro na obtenção das pesquisas de satisfação", error.statusText + '-' + error.statusCode);
            throw new Error(error);
        }

执行将暂停,直到feedbackService得到解决。

但是这个:

... 
this.feedBackJsonModel.setProperty('/Avaliacoes', await
     feedbackService.get(this.feedBackOdataModel).results); 
...

我想结果应该是相同的但似乎在运行setProperty之后解析了promise。

javascript asynchronous async-await sapui5 es6-promise
1个回答
4
投票

您的两个代码示例不相同。在第一个,你正在等待

feedbackService.get(this.feedBackOdataModel)

这可能是一种承诺,而在第二种情况下,你正在等待

feedbackService.get(this.feedBackOdataModel).results

这可能是undefined。事实上,await基本上没有效果,undefined几乎立即传递到setProperty

要修复 - 使用括号正确指出您正在等待的内容:

this.feedBackJsonModel.setProperty(
    '/Avaliacoes',
    (await feedbackService.get(this.feedBackOdataModel)).results
); 
© www.soinside.com 2019 - 2024. All rights reserved.