Promise.all找到被拒绝的承诺

pro*_*000 10 javascript promise es6-promise

在我的代码中,Promise.all()一旦所有的承诺都完成了,我就会异步运行代码.有时,一个承诺会失败,我不知道为什么.我想知道哪个承诺失败了.传递一个回调作为第二个参数的.then方法没有太大的帮助,因为我知道一个承诺被拒绝而不是承诺被拒绝.

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

有谁知道找出哪个承诺拒绝的方法?

Ber*_*rgi 15

您可以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);
});
Run Code Online (Sandbox Code Playgroud)

通常,每个拒绝原因都应包含足够的信息来识别您需要处理(或记录)的问题.