async await 等待then问题

360 阅读1分钟

转载:juejin.cn/post/721580…?

async函数返回值

  • 📑结论:async函数在抛出返回值时,会根据返回值类型开启不同数目的微任务

    • return结果值:非thenable、非promise(不等待)
    • return结果值:thenable(等待 1个then的时间)
    • return结果值:promise(等待 2个then的时间)

await右值类型区别

  • 接非 thenable 类型,会立即向微任务队列添加一个微任务then但不需等待

  • thenable 类型,需要等待一个 then 的时间之后执行

  • Promise类型(有确定的返回值),会立即向微任务队列添加一个微任务then但不需等待

    • TC 39 对await 后面是 promise 的情况如何处理进行了一次修改,移除了额外的两个微任务,在早期版本,依然会等待两个 then 的时间

作者:Squirrel_
链接:juejin.cn/post/719474…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。