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 });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。