前端知库

Promise.all、allSettled、race 和 any 如何选择?

根据成功条件和失败处理方式,选择合适的并发组合。

参考答案
方法完成条件
all全部成功时成功,任意失败就拒绝
allSettled等全部结束,返回每项的状态和值或原因
race跟随第一个敲定的 Promise,成功或失败都可以
any第一个成功即成功,全部失败才以 AggregateError 拒绝

all 和 allSettled 的结果顺序与输入顺序一致,不是完成顺序。这些方法不会自动取消其他请求;可使用支持 AbortSignal 的 API 主动取消。

边界情况:空数组传给 all、allSettled 会得到已兑现的 Promise;any 会拒绝;race 会一直待定。兑现后的 .then 仍以微任务执行。