2009-06-09 70 views
2

我在页面上有两个并发的ajax调用。当他们都完成(并成功)时,我想调用一个函数。jquery ajax:当所有请求都完成时调用函数

低效率的解决方案:

  1. 使得Ajax调用
  2. 成功的调用,使B键
  3. 成功呼叫B,调用函数

不幸的是,这打破了并发。

任何其他方式我可以完成相同的效果?

回答

-1

设置一个全局变量ajax_call_A_complete 设置另一个全球varialbe ajax_call_B_complete 设置这两个varialbes假

无作出AJAX调用同时。在两个Ajax调用的成功回调中,将varialbes设置为true。我的意思是ajax调用A将ajax_call_A_complete设置为true,并且ajax调用B将设置varialbe ajax_call_B_complete为true。

设置周期时间,每2秒检查这两个变量的值。当这两个变量都是真的时,请关闭您的依赖任务。

+0

假设是不可能设置这些标志在其他任何位置,简单的回调事件比定时器的效果好得多。 – 2009-06-09 16:10:43

0
var isASuccessful = false; 
var isBSuccessful = false; 
function callARequest() { 
    $.get("path/to/url", { params: list }, function() { 
     isASuccessful = true; 
     if (isBSuccessful) { 
      callMeAfterAandB(); 
     } else { 
      callBRequest(); 
     } 
    }); 
} 
function callBRequest() { 
    $.get("path/to/other/url", { params: list }, function() { 
     isBSuccessful = true; 
     if (isASuccessful) { 
      callMeAfterAandB(); 
     } else { 
      callARequest(); 
     } 
    }); 
} 
function callMeAfterAandB() { 
    // todo: something 
} 
1
$(document).ajaxStop(function() { 
     //do your JQuery stuff; 
}); 
相关问题