1

我有一个错误,我怀疑是由于我对 jQuery 的了解不足。下面的片段描述了该场景:

var towait = [];

towait.push($.get('someurl',function(data){ dosomething...}));
towait.push($.get('someurl',function(data){ dosomething...}));
....
towait.push($.get('someurl',function(data){ dosomething...}));

$.when(towait).done(function(){ dosomething else});

症状是dosomething else在 dosomething 调用之前执行(也许我错了,我正在寻找错误)我的假设是否正确?在执行 $.get(...,function(){}) 之前,延迟是否似乎加入了?如果是这样,有什么方法可以改变这种行为?

4

1 回答 1

3

when()方法的文档中,我只看到参数延迟对象。在这里,您传递一个不是延迟对象的数组。您希望将每个请求作为参数传递。

试试这个:

$.when.apply($,towait).done(function(){ dosomething else});

演示

当然,如果一个请求被拒绝,$.when 回调会在任何其他请求完成之前被触发。

于 2013-06-06T09:28:39.690 回答