Работа с массивами отложенных объектов
С использованием$.Deferred
Я сталкивался с этим сценарием пару раз: у меня есть список значений, каждое из которых в некотором роде приводит к отложенному объекту, и я хочу выполнить обратный вызов, как только все отложенные объекты будут разрешены.
Более конкретный пример будет примерно таким:
var urls = [ 'foo.com', 'bar.com', 'baz.com', 'qux.com' ],
defers = [], defer;
for( var i = 0, j = urls.length; i < j; i++ ){
defer = $.ajax({
url: 'http://' + urls[ i ]
});
defers.push(defer);
}
$.when.apply(window, defers).done(function(){
// Do Something
});
Есть ли более элегантное решение, чем код в моем примере?