首页 > 解决方案 > 有没有像 Promise.all() 这样的函数,但即使在一个失败之后也会运行所有的 Promise?

问题描述

Promise.all()一旦其中一个承诺失败,似乎就会解决,即使有些人拒绝,我也想运行所有承诺。有这个功能吗?

标签: javascriptpromise

解决方案


您可以使用Promise.allSettled(),新的 Promise API 将在提供的数组中的所有 Promise 对象都已解决(即完成或拒绝)时解析。

then 回调中的值将有一个对象数组,该数组有两个键status,并 value描述给定数组中每个单独承诺的结果:

Promise.allSettled([
  Promise.resolve("Resolved Immediately"),
  new Promise((res, rej) => {
    setTimeout(res("Resolved after 3 secs"), 3000)
  }),
  Promise.reject(new Error("Rejected Immediately"))
]).then(arr => console.log(arr));


推荐阅读