所有执行完毕后,多个异步$ .ajax调用后跟函数

时间:2011-08-02 18:10:22

标签: jquery ajax asynchronous callback

我正在做3个异步ajax请求。

之后我需要执行一个函数,但只有当所有3个请求都完成时才需要。

我将如何实现这一目标?

由于我们的框架,我仅限于最新的1.4版本。

谢谢, 韦斯利

4 个答案:

答案 0 :(得分:2)

您需要让所有响应处理程序调用相同的作用域/函数,并在那里跟踪返回的请求。仅在所有请求都返回时继续。不要忘记处理错误案例。

答案 1 :(得分:0)

您可以使用jQuery的Reactive Extension实现它。看看这个问题:trigger event after several ajax calls succeeded

答案 2 :(得分:0)

最简单且非常有限的方法就是嵌套你的ajax调用。但是只有在同一个地方同时进行这些调用时才有效。

$.ajax({
  url: "test.html",
  success: function(){
    $.ajax({
      url: "test2.html",
      success: function(){
        // n level nesting
      }
    });
  }
});

答案 3 :(得分:0)

扩展Andrius的回答,我总是做一些与他相似的事情:

function f1(){
  $.ajax({
    url: "test.html",
    success: function(data){
      //do something
      f2();
    }
  });
}

function f2(){
  $.ajax({
    url: "test2.html",
    success: function(data){
      //do something else
      //maybe call f1() if you want to loop again?
    }
  });
}

我用这种方式连接了许多电话。有时我放setTimeout(function(){f2()},1000);如果我想在通话之间稍微暂停一下。

我的应用程序需要从服务器进行持续轮询,所以我在链中的最后一个调用第一个。所以它将永远循环,只有一个当前调用未完成(所以我不会用请求锤击服务器)