node.js – Bluebird – 如何尽早打破承诺链

前端之家收集整理的这篇文章主要介绍了node.js – Bluebird – 如何尽早打破承诺链前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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
})

如何修改上面的代码以提前破解(跳过第二个然后())?

解决方法

Bluebird允许 cancel a promise
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
});

猜你在找的Node.js相关文章