Javascript 在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);

我正在使用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调用之前被调用——因此显然调用的顺序混淆了。有什么方法可以确保在get回调之后调用console.logstuff行吗?

您应该了解延迟对象:

使用$.when是正确的,但它接受延迟对象的参数。所以在现实中,你需要像$whencalls[0],calls[1]。。。。这有点麻烦,所以幸运的是,我们可以使用javascript函数。应用并获得如下内容:

$.when.apply(null, calls).done(function() {
    console.log(stuff);
}

你试过使用链锁吗?call=$.getURL.thendo\u stuff;?