Javascript Promise.all:Promise.all.catch的论点是什么

Javascript Promise.all:Promise.all.catch的论点是什么,javascript,Javascript,承诺的论点是什么 e是错误数组还是对象数组 Promise.all([promise1, promise2, ..]) .then((result1, result2,..)=>{}) .catch((error1,error2..???)=>{ }) 我们如何获得错误数组?如果不是Promise.all,那么如何处理?简单的Promise和Promise.all的错误处理没有区别 这意味着: Promise.all([p1, p2, p3, ...]) .then((v)

承诺的论点是什么

e是错误数组还是对象数组

Promise.all([promise1, promise2, ..])
.then((result1, result2,..)=>{})
.catch((error1,error2..???)=>{

})

我们如何获得错误数组?如果不是Promise.all,那么如何处理?

简单的
Promise
Promise.all的错误处理没有区别

这意味着:

Promise.all([p1, p2, p3, ...])
  .then((v) => {
     // ...
  })
  .catch((err) => {
     // ...
  });
捕获中有一个错误


Promise.all
以数组形式(在then中)返回给定的
Promises的所有结果

如果出现错误,它将抛出错误,您将捕获错误(1个错误)



编辑关于获取所有错误的事实,这似乎是这里真正的问题

Javascript是单线程的,这意味着它一次只能执行一个函数。Javascript异步仅意味着I/O不会被阻塞

所有的工作都是在第一次遇到错误时抛出。停止其他承诺。因此您不能有多个错误

根据

all函数返回一个新的承诺,该承诺通过 传递的承诺或拒绝的履行值数组 第一次通过的拒绝承诺的原因。它解决了所有问题 在运行此算法时,将iterable的元素传递给promises

因此

当使用参数onRejected调用catch方法时,如下所示 已采取以下步骤:

  • 让承诺成为这个价值观的核心
  • 返回调用(承诺,“然后”,«‍未定义,已拒绝»)

因此,第一个通过的承诺拒绝的原因是
promise.all.catch

您可能想要实现的目标需要不同的方法:

const promises = [p1, p2];

const promisesWithExceptionInfo = promises.map(p => {
  return new Promise(resolve => {
    p.then(result => resolve({result})).catch(error => resolve({error})); 
  });
});

// now your promises will always be resolved but contain either a result or an error

Promise.all(promisesWithExceptionInfo).then(res => {
  // res is an array of objects where each promise result or error can be evaluated
}); 

我们能从所有的承诺中得到错误吗?我需要得到所有的错误。“除了承诺,我们还能用别的什么吗?”@ShishirArora我已经编辑了我的答案。我的问题似乎是重复的。我在那里看到了很好的答案。谢谢你的帮助。