承诺 – 在Promise中捕获所有的拒绝。所有

我有这个虚拟代码

var Promise = require('bluebird') function rej1(){ return new Promise.reject(new Error('rej1')); } function rej2() { return new Promise.reject(new Error('rej2')); } function rej3() { return new Promise.reject(new Error('rej3')); } Promise.all([rej1(),rej2(),rej3()] ).then(function(){ console.log('haha') },function(e){ console.error(e); }) 

在拒绝处理程序中,我只看到第一个拒绝。 是否有可能查看所有三个拒绝?

是的,可以查看所有三个拒绝。 Promise.all ,一旦拒绝,就拒绝。 相反 – 使用Promise.settle

 Promise.settle([rej1(), rej2(), rej3()).then(function(results){ var rejections = results.filter(function(el){ return el.isRejected(); }); // access rejections here rejections[0].reason(); // contains the first rejection reason });