等到每个()函数中的所有ajax查询都使用$ .when()完成

时间:2015-02-16 20:04:16

标签: jquery ajax .when

如果检查$ .each()函数中包含的ajax查询中没有错误,如何运行callback()?

var resp_error = false;
$(".items").each(function() {
    ajax_item($(this)).done(function(resp){
        if (resp.val == 0)    return (resp_error = true);
    });
});
if (!resp_error)    callback();

其中ajax_item(item)是延迟的ajax查询:

function ajax_item(item) {
    return $.ajax({
       ...
    });
};
ajax查询返回

val,并在resp_error时触发错误(val = 0)。

我认为最好的方法是使用$ .when(),但我找不到编码的方法吗?

2 个答案:

答案 0 :(得分:0)

最简单的方法是:

$(document).ajaxStop(function() {
  // place code to be executed on completion of last outstanding ajax call here
});

答案 1 :(得分:0)

好的,我找到了它!

var resp_error = false;
var ajax_calls = [];
$(".items").each(function() {
    ajax_calls.push(ajax_item($(this)).done(function(resp){
       if (resp.val == 0)    return (resp_error = true);
    }));
});
$.when.apply($, ajax_calls).then(function() {
    if (!resp_error)    callback();
});