Да, правильно.
Цитата:
|
По-сути, можно заменить массивом независимых Deferred
|
да можно.
Смысл/польза в том, что свой велосипед юзаю в риа. и там случаев, где надо делать массив больше, нежели где надо простой диферд.
Код писал под пример(тоесть сначала написал пример, а потом код для реализации).
Тут могут быть эм-ты фреймворка если что.
var d = _.deferred();
// ##### --- stages actions
d.stage('animation').done(function() {
console.log('animation finished');
}).fail(function() {
console.log('animation failed');
});
d.stage('ajax').done(function() {
console.log('ajax done');
}).fail(function() {
console.log('ajax fail');
});
d.stage('button');
// ##### --- actions
_.post('some/url.php').succes(function(data) {
d.resolve('ajax', data);
}).err(function(err) {
d.reject('ajax', err);
});
_('.menu').hide(200, function() {
if(this.length) {
d.resolve('animation');
}
else {
d.reject('animation');
}
});
_('.button-forward').click(function() {
d.resolve('button');
});
_('.button-back').click(function() {
d.reject('button');
});
// ##### --- defered finally
d.success(function() {
console.log('chain success');
}).anyway(function() {
console.log('chain done');
}).err(function() {
console.log('chain with err');
});
Вот. Я было попробовал это переписать короче - не получилось...
Ещё из плюсов:
не засирается область лишними переменными.
+я изначально диферд сделал простым. тоесть все свойства создаются в момент навешивания обработчиков.
так что можно не париться что колбасу режем скальпелем.