首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我所有的ajax调用都完成时,我如何触发一个函数?

当我所有的ajax调用都完成时,我如何触发一个函数?
EN

Stack Overflow用户
提问于 2010-10-04 22:27:14
回答 3查看 148关注 0票数 1

我正在使用jQuery调用几个ajax搜索服务,并希望在所有调用完成时触发一个合并结果的函数(某种等待所有回调返回的回调函数)。实现这一目标的最佳方法是什么?

谢谢

7月

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-04 22:35:26

我过去见过的一种方法是计数器:

var计数器= 3;

代码语言:javascript
复制
$.ajax({
  // ..
  success: function() {
    if(--counter == 0) handleComplete();
    // ...
  }
});

// 2 other similar ajax calls here

function handleComplete() {
  // this is done when all are complete
}

显然,你也会想要处理错误。

票数 1
EN

Stack Overflow用户

发布于 2010-10-04 22:31:45

我可能会使用ajaxComplete event。您必须有自己的逻辑来了解该系列何时开始和结束,但这可能会来自您的应用程序逻辑。

下面是一个简单的例子(live copy):

代码语言:javascript
复制
jQuery(function($) {
  var count = 0;

  display("Hooking up handler");
  $(document.body).ajaxComplete(function(event, xhr, options) {
    ++count;
    display("Got a completion, new counter value = " + count);
  });
  display("Doing three ajax requests.");
  $.ajax({
    url: "http://jsbin.com/aciyu4"
  });
  $.ajax({
    url: "http://jsbin.com/aciyu4"
  });
  $.ajax({
    url: "http://jsbin.com/aciyu4"
  });

  function display(msg) {
    $("<p/>").html(msg).appendTo(document.body);
  }
});​

在该示例中,我使用一个count变量跟踪已完成的请求数,注册的处理程序在该变量上是一个closure (因此可以访问它)。

票数 0
EN

Stack Overflow用户

发布于 2010-10-04 22:34:07

在进行ajax调用时增加一个局部变量。在返回回调时减小它。当一个回调触发var回调为0时,调用全局结果回调。你也可以选择使用你所做的调用数组,或者堆栈等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3856173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档