小编典典

jQuery:等待所有ajax调用完成,然后继续

ajax

我的document.ready()中有一些ajax调用

喜欢 :

for (j=1; j <= 7; j++){
  (function(index) {
    $.getJSON('my.php', {id:index}, 
      function(data) {
         $.each(data, function(index2, array){
         ........
         });  
      });
    })(j)
}

//DO NOT CONTINUE UNTIL FINISH AJAX CALLS

 ........
MORE JQUERY CODE

我如何强制它等待,直到我们从ajax请求获得所有回叫之前不继续?


阅读 303

收藏
2020-07-26

共1个答案

小编典典

我根本不喜欢任何答案,最好的方法(自Jquery 1.5+起)是使用Deferred对象,这些是操纵异步调用的对象,可以解决:

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);

这样,myFunc会在执行2个ajax调用之后执行,如果其中一个出错,则执行myFailure。

您可以在jquery官方文档中阅读有关它的更多信息:JQuery Deferred Object

如果有人看到此帖子,我会写此解决方案,可能会有所帮助。

对不起我的英语:P

2020-07-26