异步函数的返回语义是什么?

时间:2018-10-05 09:49:29

标签: javascript async-await return eslint

我正在尝试绕过no-return-await规则。

请考虑以下代码段:

AKAZE/ORB/SURF

每个异步函数都返回一个诺言,因此const a = async () => { return 5; }; const b1 = async () => { return a(); }; const b2 = async () => { return await a(); }; const wut = async () => { console.log(await b1()); console.log(await b2()); }; wut();返回一个诺言。在这种情况下,我希望a()也会包装一个Promise,因此结果将是嵌套的Promise。像b1()中那样,检索值将需要两次等待,但这似乎并不是必需的,因为b2都正确返回了值。这是怎么回事?嵌套的promise是否递归解决?我迷路了。感谢您的指导和解释!

1 个答案:

答案 0 :(得分:1)

这是诺言的一般行为方式,并不特定于async / await语法。

如果一个承诺被另一个承诺解决,那么它实际上会变成那个承诺,而不是立即解决。