我在頁面上有兩個併發的ajax調用。當他們都完成(併成功)時,我想調用一個函數。jquery ajax:當所有請求都完成時調用函數
低效率的解決方案:
- 使得Ajax調用
- 成功的調用,使B鍵
- 成功呼叫B,調用函數
不幸的是,這打破了併發。
任何其他方式我可以完成相同的效果?
我在頁面上有兩個併發的ajax調用。當他們都完成(併成功)時,我想調用一個函數。jquery ajax:當所有請求都完成時調用函數
低效率的解決方案:
不幸的是,這打破了併發。
任何其他方式我可以完成相同的效果?
設置一個全局變量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秒檢查這兩個變量的值。當這兩個變量都是真的時,請關閉您的依賴任務。
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
}
看一看this answer I gave to pretty much the same question有一天,也有在the demo我創建去用它(查看源代碼在該網頁上看到完整的代碼)看看。這使得更有效地使用JavaScript的內在功能和整體性質不是擺弄標誌變量的語言,恕我直言;-)
$(document).ajaxStop(function() {
//do your JQuery stuff;
});
假設是不可能設置這些標誌在其他任何位置,簡單的回調事件比定時器的效果好得多。 – 2009-06-09 16:10:43