更新:这个问题是 jQuery 1.7 vs 1.8 的结果。永远不要在 1.7 中使用 Promise,因为它们不能通过在.then
. 1.8 看起来他们没有搞砸。
http://jsfiddle.net/delvarworld/28TDM/
// make a promise
var deferred = $.Deferred();
promise = deferred.promise();
// return a promise, that after 1 second, is rejected
promise.then(function(){
var t = $.Deferred();
setTimeout(function() {
console.log('rejecting...');
t.reject();
}, 1000);
return t.promise();
});
// if that promise is successful, do this
promise.then(function() {
console.log('i should never be called');
})
// if it errors, do this
promise.fail(function() {
console.log('i should be called');
});
deferred.resolve();
预期:'我应该被调用'
实际:'我永远不应该被调用'
问题:我想要链接回调并让它们中的任何一个能够打破链接并触发fail
函数,并跳过其他链接的回调。我不明白为什么所有的 then 都被触发了,而 fail 没有被触发。
我来自 NodeJS 的 Q 库,所以我.then
先尝试了它。但是,将其更改为.pipe
没有效果。