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?

War es hilfreich?

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
scroll top