2009-06-09 97 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; 
}); 
相關問題