Javascript Promise.all:Promise.all.catch的论点是什么
承诺的论点是什么 e是错误数组还是对象数组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)
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我已经编辑了我的答案。我的问题似乎是重复的。我在那里看到了很好的答案。谢谢你的帮助。