2015-04-20 109 views
2

在我的代碼中,我必須應付幾次ajax調用,然後在完成所有的調用後調用更新函數。我試圖用ajaxStop,但問題是,如果循環沒有作出任何Ajax調用該方法不是叫......當所有的Ajax查詢完成後執行一個函數

它看起來像這樣:

for (var key in data) { 
    if (...) { 
    $.ajax({ ... }); 
    } 
} 

$(document).ajaxStop(function() { 
    updateAll(); // I need to call this function even if there was no ajax call 
}); 

有人知道如何一旦所有來自前一個循環的ajax完成(即使根本沒有查詢),就調用一個函數?

感謝

回答

1

返回的承諾添加到一個數組,然後使用$.when決定時,他們都做

var xhr = []; 

for (var key in data) { 
    if (...) { 
     var request = $.ajax({ ... }); 

     xhr.push(request); 
    } 
} 

$.when.apply($, xhr).done(updateAll); 
+0

它的工作原理,感謝快速回答:) – Luckyn

相關問題