等待.then()语句

时间:2018-07-29 17:04:13

标签: javascript node.js asynchronous

如果我有此返回声明

return await foo1().then(() => foo2());

并且foo1和foo2都是异步的,代码将等待foo2还是仅foo1的解析?

谢谢。

3 个答案:

答案 0 :(得分:1)

await等待整个表达式foo1().then(...),无论...是什么。这同样适用于then-s链(您在注释中要求它)。
另外,您在这里实际上并不需要await,只需返回由Promise(或其中的一个链)创建的then,请参见Difference between `return await promise` and `return promise`进行解释。

答案 1 :(得分:1)

return await somePromise();是反模式,因为 await将本身为Promise的somePromise()的结果包装在新创建的Promise中。

return somePromise();是正确的形式。

答案 2 :(得分:0)

是的,它将等待,因为await运算符的优先级低于.运算符。

但是,您的代码无法利用await来提供出色的可读性。

首选

await foo1();
const result = await foo2();
return result;