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

如何使用await与Promise.all?两段异步代码执行效果是否一致?

两段JavaScript代码的执行逻辑完全不同

第一段代码:await Promise.all([a(), b()]);

  • 执行时会同时调用a()和b(),两个Promise任务并行启动
  • 会等待这两个Promise都完成(若其中一个reject,会立即抛出该错误),最终返回一个包含两个Promise结果的数组
  • 总等待时长是两个Promise中耗时更久的那个的时间

第二段代码:await (a(), b());

  • 这里用到了JavaScript的逗号运算符:先执行左边的a(),等待它的Promise完成后,再执行右边的b()
  • 最终只会等待b()的Promise完成,并且只返回b()的执行结果,a()的结果会被直接丢弃
  • 总等待时长是a()的耗时加上b()的耗时,两个任务是串行执行的

核心差异总结

  • 执行模式:第一段是并行执行两个Promise,第二段是串行执行
  • 返回值:第一段返回两个结果的数组,第二段仅返回b()的结果
  • 耗时:第一段耗时取两者最大值,第二段耗时是两者之和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:10:36