等待jQuery AJAX响应

Eax*_*Eax 18 ajax jquery jquery-deferred

我有一个页面,使用被称为100次的jQuery .ajax(async:true),问题是,当它们全部被加载时,我需要系统在继续之前等待所有100个调用返回.我该怎么做?

提前致谢!:)

更新:

这些调用是在for()循环中进行的(其中有100个:))

lon*_*day 36

这样做的好方法是$.when.您可以按如下方式使用:

$.when(
    $.ajax({/*settings*/}),
    $.ajax({/*settings*/}),
    $.ajax({/*settings*/}),
    $.ajax({/*settings*/}),
).then(function() {
    // when all AJAX requests are complete
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您在阵列中拥有所有AJAX调用,则可以使用apply:

$.when.apply($, ajaxReqs);
Run Code Online (Sandbox Code Playgroud)

请注意,这至少需要jQuery 1.5.


要将AJAX请求添加到数组,请执行以下操作:

var ajaxReqs = [];
for (var i = 0; i < 100; i++) {
    ajaxReqs.push($.ajax({
        /* AJAX settings */
    });
}
$.when.apply($, ajaxReqs).then(function() {
    // all requests are complete
});
Run Code Online (Sandbox Code Playgroud)

  • Aaargh ......就在你认为自己是jQuery的时候,有一些新东西. (2认同)