попытка разорвать цепочку обещаний jQuery с помощью .then, .fail и .reject
Обновление: эта проблема была результатом jQuery 1.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();
Ожидаемый: «я должен называться»
Фактически: «меня никогда не должны называть»
Problem: Я хочу связать обратные вызовы, и любой из них сможет разорвать цепочку и вызватьfail
функция, и пропустить другие цепные обратные вызовы. Я не понимаю, почему все эти события сработали, а сбой не сработал.
Я пришел из библиотеки Q NodeJS, поэтому я попробовал ее с.then
первый. Тем не менее, изменив его на.pipe
не имеет никакого эффекта