Javascript 在ajax调用函数完成后,如何调用函数?
我正在使用jQuery运行一些ajax:Javascript 在ajax调用函数完成后,如何调用函数?,javascript,jquery,ajax,promise,Javascript,Jquery,Ajax,Promise,我正在使用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);
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调用之前被调用——因此显然调用的顺序混淆了。有什么方法可以确保在get回调之后调用console.logstuff行吗?您应该了解延迟对象: 使用$.when是正确的,但它接受延迟对象的参数。所以在现实中,你需要像$whencalls[0],calls[1]。。。。这有点麻烦,所以幸运的是,我们可以使用javascript函数。应用并获得如下内容:
$.when.apply(null, calls).done(function() {
console.log(stuff);
}
你试过使用链锁吗?call=$.getURL.thendo\u stuff;?