Обновление: эта проблема была результатом jQuery 1.7 vs 1.8. Никогда не используйте promises в 1.7 beacuse, они не связаны с возвратом обещания внутри .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
и пропустить другие связанные вызовы. Я не понимаю, почему все thens запускаются, и сбой не запускается.
Я иду из библиотеки NodeJS Q, поэтому сначала попробовал его с .then
. Однако изменение его на .pipe
не влияет.