在我的代码中,我使用 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/