Синяя птица - как разорвать цепь обещаний рано
PromiseA().then(function(dataA){
if (dataA.foo == "skip me")
return ?? //break promise early - don't perform next then()
else
return PromiseB()
}).then(function(dataB){
console.log(dataB)
}).catch(function (e) {
//Optimal solution will not cause this method to be invoked
})
Как можно изменить приведенный выше код, чтобы прервать его раньше (пропустить 2-й then ())?
1 ответ:
Bluebird позволяет отменить обещание:
var Promise = require('bluebird'); Promise.config({ // Enable cancellation cancellation: true, }); // store the promise var p = PromiseA().then(function(dataA){ if (dataA.foo == "skip me") p.cancel(); // cancel it when needed else return PromiseB(); }).then(function(dataB){ console.log(dataB); }).catch(function (e) { //Optimal solution will not cause this method to be invoked });