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

JS Promise是并行执行还是顺序执行?代码验证解惑

JS Promise的执行机制:并行还是顺序?

首先明确结论:JavaScript是单线程环境,Promise构造函数内的同步代码是同步顺序执行的,你的代码里三个Promise完全是按顺序执行,没有并行。

你的代码执行过程分析

  1. 当你依次创建record1、record2、record3三个Promise实例时,Promise构造函数的回调会立即执行——因为这部分是同步代码,JS主线程必须完成当前同步任务才会处理后续内容:
    • 先执行record1里的双层for循环,完成后调用resolve,记录此时的耗时(1089ms);
    • 接着执行record2里的双层for循环,完成后调用resolve,记录的是从开始到第二个循环结束的总耗时(2755ms);
    • 最后执行record3里的双层for循环,完成后调用resolve,记录的是三个循环全部结束的总耗时(3943ms)。
  2. Promise.all的作用只是等待所有Promise都完成状态变更后,将它们的resolve结果按传入顺序收集到数组中返回,它不会改变Promise内部代码的执行顺序,也无法让同步代码并行。

什么时候Promise会有"并行"的错觉?

只有当Promise构造函数内包含异步操作(比如setTimeout、网络请求、文件IO等)时,这些异步任务会被放入事件队列,等待主线程空闲后执行,此时多个Promise的异步任务会在主线程空闲时被依次调度,看起来像是"并行",但本质是单线程下的异步任务调度,并非真正的多线程并行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:12:19