我有一个错误,我怀疑是由于我对 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(){}) 之前,延迟似乎在 when 中加入了吗?
如果是这样,有什么方法可以改变这种行为?
最佳答案
在 when() 的文档中方法,我认为只有参数延迟对象。这里你传递了一个不是延迟对象的数组。您希望将每个请求作为参数传递。
试试这个:
$.when.apply($,towait).done(function(){ dosomething else});
当然,如果一个请求被拒绝,$.when 回调会在任何其他请求完成之前触发。
关于javascript - jQuery when() 函数 : does it fire before each single done?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957619/