为什么没有任何deferred.reject()调用.fail()在最后触发处理程序?如何使用嵌套的promises触发单个错误处理程序?我需要嵌套的promises for closure.
当我触发拒绝时d1,它仍然一直到解决/拒绝d2.如果我添加.fail()到块中d1,那么它确实可以捕获拒绝.但这就是我想要避免的,.fail()每个嵌套承诺的处理程序.
var Q = require('q');
somePromise().then(function (v1) {
var d1 = Q.defer();
asyncFunc1(v2, function (err, v3) {
if (!v3)
d1.reject(new Error('error'));
else
d1.resolve(true);
return d1.promise.then(function (promise1Kept) {
var d2 = Q.defer();
asyncFunc2(v4, function (err, v5) {
if (!v5)
d2.reject(new Error('error'));
else
d2.resolve(true);
});
return d2.promise.then(function (promise2Kept) {
console.log('end of promise chain');
});
});
});
}).fail(function (err) {
console.log('Error!');
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1057 次 |
| 最近记录: |