Versprechen - alle Ablehnungen in einem Versprechen auffangen.alle [duplizieren]
Frage
Ich habe diesen Dummy-Code
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);
})
Im rejectionHandler sehe ich nur die erste Ablehnung.Ist es möglich, alle drei Ablehnungen anzuzeigen?
Lösung
Ja, es ist möglich, alle drei Ablehnungen anzuzeigen. Promise.all
lehnt ab, sobald ein Versprechen abgelehnt wird.Stattdessen - verwenden 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
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow