[英]How do I call a function *after* my ajax call functions complete? [duplicate]
这个问题已经在这里有了答案:
我正在使用jQuery运行一些ajax:
var stuff = {};
function do_stuff(thing){
stuff[thing.id] = thing;
}
function fun(){
var calls = [];
for(var i = 0; i < 10; i++){
var call = $.get(URL, function(data){
do_stuff(data);
});
calls.push(call);
}
$.when(calls).done(function(){
console.log(stuff);
});
}
我正在使用$.when
,但是我得到的是{}
而不是我期望的数据。 当我在Chrome中设置断点时,在任何do_stuff
调用之前都会调用log
行-显然,这些调用的顺序混杂在一起。 有没有一种方法可以确保在我的get回调完成后调用console.log(stuff)
行?
您应该阅读延迟的对象: http : //api.jquery.com/category/deferred-object/
您使用$.when
是正确的,但是可以接受延迟对象的参数。 因此,实际上,您需要类似$.when(calls[0], calls[1], ...)
。 这有点麻烦,因此幸运的是可以使用javascript函数.apply
并获得类似以下内容:
$.when.apply(null, calls).done(function() {
console.log(stuff);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.