javascript - 当一系列 jquery ajax 调用完成时执行一个函数(!)

标签 javascript jquery ajax

我需要进行一系列 (1-20) ajax 调用,并且我需要在它们全部完成后调用另一个函数。我所说的完成是指调用 $.ajax({ complete: ...}) 时。

我研究过使用 $.when,但在 jsfiddle 上摆弄它之后我遇到了 2 个问题。 1. $.then 和 $.done 在我所有的完整回调之前被调用。 2. 如果一个 ajax 调用失败,则根本不会调用它。 基本上,似乎 $.done 是在成功时调用的,而不是完成的。

我认为一定有一些好的 ajax 管理器/队列可以处理这类事情。或者甚至可能是一些通用的异步任务处理问题.. ;)

fiddle :http://jsfiddle.net/zvSgX/2

最佳答案

如果您不喜欢 $.ajax 的默认 jQuery 选择 调用解析它们的延迟对象,您可以编写自己的包装器;

var my_ajax = function (options) {

    var deferred = $.Deferred();
    var user_complete = options.complete;

    options.complete = function (jqXHR, textStatus) {
        if (user_complete) user_complete(jqXHR, textStatus);
        deferred.resolve();
    };

    $.ajax(options);

    return deferred.promise();
};

这是一个fork of your JSFiddle演示它与你的行动 示例代码。

由于 my_ajax 从未调用过 deferred.reject(),因此将 .fail 链接到 $.when 如果 $.when 的所有参数都是 my_ajax 调用,则将毫无意义。

希望对您有所帮助!如果我能澄清任何事情,请告诉我。

关于javascript - 当一系列 jquery ajax 调用完成时执行一个函数(!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11030946/

相关文章:

javascript - 通过检查现有属性添加多个新属性

jquery - 单击时如何从 jquery-ui 选项卡中删除旧内容?

php - 尝试在 Console.log 中获取非对象的属性

javascript - JavaScript 中 "==="运算符的名称是什么

javascript - 检查文本区域或输入是否有需要的特殊单词

javascript - setInterval 和函数

javascript - 使用 jQuery、Ajax 或 AngularJS 从 Azure/oauth2/token 端点获取 access_token 时出现跨域问题

php - 如何将下拉列表中的值插入到 mysql 查询中以从数据库中检索数据

javascript - jQuery - 阅读更多/阅读更少。如何替换文字?

javascript - polymer 中凸起的纸按钮上未显示波纹效果和阴影