jQuery when()函数:在每个单独完成之前它会触发吗?

时间:2013-06-06 08:49:42

标签: javascript jquery

我有一个错误,我怀疑是由于我对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调用之前执行dosomething else(也许我错了,我正在寻找一个bug)我的假设是正确的吗? defferred似乎是在$ .get(...,function(){})执行之前加入的吗? 如果是这样,有一些方法可以改变这种行为?

1 个答案:

答案 0 :(得分:3)

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

试试这个:

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

DEMO

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