Promise 不保证执行有序,仅保障状态不可逆和链式回调顺序;串行需开发者构建,如链式.then()、async/await循环或reduce折叠,而Promise.all是并发非顺序。
promise 本身不保证“执行有序”,它只保证状态不可逆、链式回调按注册顺序触发。真正让异步任务按序执行的,是开发者主动构建的串行控制流,而不是 promise 自动排序。
每个 .then() 都等前一个 Promise settled(完成或失败)后才执行,天然形成 FIFO 流水线:
task1().then(() => task2()).then(() => task3())
.catch() 可统一拦截,不影响顺序逻辑在 async 函数内用 for 循环 + await,每轮都阻塞等待当前 Promise 完成:
for (const fn of tasks) { const res = await fn(); results.push(res); }
把 Promise 数组“折叠”成一条链,从 Promise.resolve() 开始累积:
tasks.reduce((p, fn) => p.then(() => fn()), Promise.resolve())
Promise.all([a(), b(), c()]) 是并发发起,谁先完成谁先 settle,数组索引只反映传入顺序,不代表执行时序: