更新:この問題は、jQuery1.7と1.8の結果でした。1.7でプロミスを使用しないでください。プロミスは、内でプロミスを返すことと連鎖できないため.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がトリガーされ、失敗がトリガーされない理由がわかりません。
私はNodeJSのQライブラリから来ているので、.then
最初に試してみました。ただし、に変更し.pipe
ても効果はありません。