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

时间:2019-03-25 15:20:27

标签: javascript asynchronous async-await sapui5 es6-promise

以下代码使用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);
        }

在反馈服务得到解决之前,执行将暂停。

但这是

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

我想结果应该是一样的,但是可以看到在运行setProperty后,promise得以解决。

1 个答案:

答案 0 :(得分:4)

您的两个代码示例不等效。首先,您正在等待

feedbackService.get(this.feedBackOdataModel)

这大概是一个承诺,第二,您正在等待

feedbackService.get(this.feedBackOdataModel).results

大概是undefined。因此,实际上await实际上没有任何作用,undefined几乎立即传递到setProperty中。

要解决-使用括号正确指示您正在等待的内容:

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