javascript - 等待所有 jQuery ajax 调用完成(完成或拒绝)

标签 javascript jquery ajax wait

<分区>

我查看了许多类似的问题,但建议的解决方案并非在所有情况下都能按预期工作。当所有 ajax 调用都成功完成时,以下代码工作正常,但如果任何 ajax 调用碰巧失败,则立即调用 onComplete:

var deferredArray = $('.preload').map(function() {
    return $.get(this.href)
});
$.when.apply($, deferredArray).then(onComplete, onComplete);

所以可能有两种情况:

  • 所有延迟调用都成功,然后调用 onComplete - 工作正常;
  • 一些延迟调用失败(返回 HTTP 400 错误请求),然后立即调用 onComplete,而不是等待其他延迟调用。

第二种情况代表了我的问题。在调用 onComplete 之前,无论状态如何,它都应始终等待所有调用完成。

我使用框架中内置的 jQuery 1.7.1。如果问题是版本问题,我可以升级,但我更愿意保留当前版本。

最佳答案

您可以尝试 ajaxStop()。尽管这不是最优雅的解决方案。

$( document ).ajaxStop(function() {
  // do some stuff now that all the ajax stuff has stopped
})

另请注意:

如果调用 $.ajax()$.ajaxSetup() 时将全局选项设置为 false,则 .ajaxStop() 方法不会触发。

关于javascript - 等待所有 jQuery ajax 调用完成(完成或拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854234/

相关文章:

javascript - 监控 JQuery 发出的所有 AJAX 请求?

javascript - 永久保存jquery修改的页面

javascript - for循环与forEach在javascript中的性能和jsperf结果的可信度

javascript - 将图层名称复制到 Photoshop 中文本框的脚本

javascript - JavaScript 中的意外标识符

javascript - jQuery 克隆节点错误

jquery - 使用 Ajax 的简单 POST 请求

javascript - 将 java 变量传递给 javascript 函数

javascript - 结合knockout.js和 polymer

javascript - HTML、CSS。尝试同时播放两个幻灯片