javascript - Promise.all 找到哪个 promise 被拒绝

标签 javascript promise es6-promise

在我的代码中,我使用 Promise.all() 在某些 promise 全部实现后异步运行代码。有时,一个 promise 会失败,我不确定为什么。 我想知道哪个 promise 失败了。将回调作为第二个参数传递给 .then 方法没有多大帮助,据我所知that 一个 promise 正在拒绝,但不是哪个 promise 正在拒绝。

堆栈跟踪也无济于事,因为第一项是 Promise.all() 的错误处理程序。传递给 Promise.all()try 函数的第二个函数的第一个参数的 Error 对象的行号是只是我记录行号的行的行号。

有没有人知道有什么方法可以查明哪个 promise 被拒绝了?

最佳答案

您可以在每个 promise 上使用 onreject 处理程序:

Promise.all(promises.map((promise, i) =>
    promise.catch(err => {
        err.index = i;
        throw err;
    });
)).then(results => {
    console.log("everything worked fine, I got ", results);
}, err => {
    console.error("promise No "+err.index+" failed with ", err);
});

一般来说,每个拒绝原因都应该包含足够的信息来识别您需要处理(或记录)的问题。

关于javascript - Promise.all 找到哪个 promise 被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008227/

相关文章:

JavaScript 字符串和数组中的对象

上个月最后一天的javascript日期

javascript - 当鼠标悬停在链接上时如何使子链接出现

javascript - 当 promise 被多次解决时会发生什么

javascript - 有什么方法可以用 Promise.all 打破 promise 数组的并行执行

javascript - 使用 AngularJS $resource 发布

javascript - 如何等待 Promise.all 中的 2 个 Promise 完成然后执行另一项任务

javascript - 如何等待 promise 得到解决

javascript - 'catch' 在原生 Promise 链中是如何工作的?

javascript - RTCPeerConnection.createOffer "promise"用法