Не уверен, что я достаточно ясен с этим заголовком, но предположим, что у меня есть класс Foo с method1
, method2
и method3
. Я обещаю его методы с помощью promisifyAll
.
Затем у меня есть цепочка then, и я хочу отменить операцию в середине второй или первой, а затем не следует вызывать.
Я читал об аннулировании (http://bluebirdjs.com/docs/api/cancellation.html), но я не знаю, как его реализовать с помощью promisifyAll.
Код, который я получил, плюс то, что мне нужно:
var bluebird = require('bluebird');
function Foo() { }
Foo.prototype.method1 = function (cb) {};
Foo.prototype.method2 = function (cb) {};
Foo.prototype.method3 = function (cb) {};
var foo = bluebird.promisifyAll(new Foo());
foo.method1Async()
.then(function (r1) {
// cancel then-chain
res.json("Task stopped");
// just stop right here
promises.cancel();
})
.then(function (r2) {
console.log(r2);
}).then(function (r3) {
console.log(r3);
})
.catch(function (er) {
console.log('Catch!');
});
Каков правильный способ получить этот результат?
Я знаю, что могу просто выбросить что-то и поймать его в методе catch
, но это внесет очень большой вклад в мой реальный код.