【问题标题】:What are the return semantics of an async function?异步函数的返回语义是什么?
【发布时间】:2018-10-05 17:54:28
【问题描述】:

我正试图围绕no-return-await 规则展开思考。

考虑这个sn-p:

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() 返回一个承诺。在这种情况下,我希望 b1() 也包含一个承诺,因此结果将是一个嵌套的承诺。检索值需要双重等待,就像在b2 中一样,但这似乎不需要,因为console.log 都正确返回了值。这是怎么回事?嵌套的 Promise 是递归解决的吗?我迷路了。感谢您的任何指示和解释!

【问题讨论】:

  • the result would be a nested promise. no - 解析过程意味着 b1 和 b2 返回的承诺相同(不是相同的承诺,但相同的解析值)
  • 嵌套的 Promise 是递归解决的吗?” - 是的,就是这样。

标签: javascript async-await return eslint


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2021-08-01
    • 2018-05-30
    • 2018-03-12
    • 2020-12-25
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多