自从使用
$.Deferred
后,我已经遇到了几次这种情况:我有一些值的列表,每个值都以某种方式产生一个Deferred对象,并且我想在所有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
});
在我的示例代码中,是否有更优雅的解决方案?