蓝鸟 – 如何早日打破承诺链

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 }) 

如何修改上面的代码来提前中断(然后跳过第二个())?

蓝鸟允许取消承诺 :

 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 });