Задача:
Зарегистрировать выполнение всех запросов, объединенных общей целью. Выполнить код по завершению всех запросов.
У меня мало опыта в решении подобных задач, коллеги, подскажите, я правильной дорогой иду?
ajax_request и another_ajax_request могут вызываться в произвольных частях кода, многоэтажка из коллбеков строго не рекомендуется.
Мой код:
jsfiddle.net/alexbaumgertner/72dcKApplicationDeferreds = {
deferreds: [],
done: function(callback) {
jQuery.when.apply(null, this.deferreds).done(callback);
},
register: function(deferred) {
var self = this;
// delete resolved
jQuery.each(this.deferreds, function(index, value) {
if (value.state() == 'resolved') {
self.deferreds.splice(self.deferreds.indexOf(value), 1);
}
});
this.deferreds.push(deferred);
}
};
function ajax_request() {
ApplicationDeferreds.register(jQuery.get('/'));
}
function another_ajax_request() {
ApplicationDeferreds.register(jQuery.get('/'));
}
ajax_request();
another_ajax_request();
ApplicationDeferreds.done(function() {
// do someone
$('#result').html('done!');
});