You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么then回调中的循环执行速度比async/await异步函数中的更快?

性能差异原因

你遇到的耗时差不是async/await原生语法本身比Promise.then慢,核心是TS编译阶段引入的额外polyfill开销:

  • 当你TS配置的target编译目标低于ES2017(ES8)时,TS会把async/await语法转译为兼容低版本环境的代码,依赖regenerator-runtime这类polyfill实现异步逻辑。await操作会被包装成生成器的迭代调用,每次执行都要额外做上下文保存、状态判断、结果包装等操作,这些额外的运行时代码和你测试用的同步循环逻辑叠加,就放大了耗时。
  • 你写的嵌套Promise.then代码不需要做兼容转译,直接调用原生Promise API,没有这层额外开销,所以耗时明显更短。

如果把TS的编译目标调整为ES2017及以上,在原生支持async/await的环境(Node.js 8+、主流现代浏览器)运行测试,两者的耗时会基本持平,不会出现数倍的差距。原生实现中await后的执行逻辑和Promise.then的回调逻辑执行路径完全对等,没有本质性能差异。

内容的提问来源于stack exchange,提问作者aggroot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 14:15:02