Bluebird - 如何尽早打破承诺链
Bluebird - how to break promise chain early
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())?
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
});
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())?
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
});