繁体   English   中英

我的ajax调用函数完成后,如何*调用函数? [重复]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM