多个promise并行执行并返回执行结果如何实现

假如有函数execter,该函数接受一个promise数组,该函数的作用是并行执行promise数组里面的每个promise并返回执行结果。(如果出错返回null)

execter([
    Promise.resolve(1),
    Promise.reject(2),
    Promise.resolve(3)
]).then(res=>{
    console.log(res) //[1,null,3]
})

网上搜了好多方法都是串行实现的,那么并行怎么实现呢(不用Promise.all、async、await)

阅读 8.2k
3 个回答

Promise.all呗。。

Promise.all 就是并行执行,并将结果按顺序返回,文档

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});
新手上路,请多包涵

Promise.allSettled()方法接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例。只有等到所有这些参数实例都返回结果,不管是fulfilled还是rejected,包装实例才会结束。该方法由 ES2020 引入。

一旦结束,状态总是fulfilled,不会变成rejected。状态变成fulfilled后,Promise 的监听函数接收到的参数是一个数组,每个成员对应一个传入Promise.allSettled()的 Promise 实例。

这应该符合你的要求

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题