2016-10-22 94 views
1

當所有Ajax請求都從這個問題完成時,我可以得到響應。當每個jQuery Ajax請求完成時獲取響應?

Wait until all jQuery Ajax requests are done?

雖然我無法找到一個問題讓「每一個」響應時,每個Ajax完成。

我該怎麼做?

等待所有響應完成的示例,但是我希望在每個ajax完成時獲得響應。

function translate(...){ 
    return $.ajax({ 
     // settings... 
    }); 
}); 

var requests = []; 
translatable_fields.each(function(){ 
    requests.push(translate(...)); 
}); 

$.when.apply($, requests).done(function(schemas) { 
    console.log("All requests complete"); 
    // do something... 
}); 

回答

0

響應將傳遞給done的回調。每個AJAX調用都會得到自己的參數,每個參數都是響應三部分的數組:響應文本,狀態以及與AJAX調用相關聯的jqXHR對象。 Documentation for $.when

您可以一次全部使用arguments object得到的迴應文本:

$.when.apply($, requests).done(function() { 
    var responses = $.map(arguments, function(arr) { return arr[0] }); 
});