使用 $.Deferred 在 $.each 中等待 AJAX 个请求
Wait for AJAX requests inside a $.each using $.Deferred
我有一个触发 AJAX 请求的 $.each 循环。
我想做的是等到所有 AJAX 请求都完成。我不介意那些 AJAX 请求的结果,问题是我必须确保它们已完成。
我认为这可以使用 $.Deferred 来完成,但即使在阅读了 JQuery 文档之后我也不知道如何做。
要等待所有 AJAX 请求完成,您可以将调用返回的 jqXHR
对象存储在一个数组中。然后,当所有请求完成时,您可以将该数组应用于 $.when
成为 运行。试试这个:
var requests = yourDataStructure.map(function() {
return $.ajax({
// setup...
});
});
$.when.apply($, requests).done(function() {
console.log('All requests finished, do something here...');
});
$.when(request1(), request2(), ... ,requestn()).done(function(res1, res2, ... , resn){
// what to do when I get all the response / when it finished
});
我曾经在堆栈溢出中找到这个答案,如果我能找到 link 我会把 link 放在下面。
注意:不要给我投票,我只是想帮忙,我只是从堆栈溢出的某个地方引用了这个。当我找到它时,我会把它放在 link :)
我有一个触发 AJAX 请求的 $.each 循环。
我想做的是等到所有 AJAX 请求都完成。我不介意那些 AJAX 请求的结果,问题是我必须确保它们已完成。
我认为这可以使用 $.Deferred 来完成,但即使在阅读了 JQuery 文档之后我也不知道如何做。
要等待所有 AJAX 请求完成,您可以将调用返回的 jqXHR
对象存储在一个数组中。然后,当所有请求完成时,您可以将该数组应用于 $.when
成为 运行。试试这个:
var requests = yourDataStructure.map(function() {
return $.ajax({
// setup...
});
});
$.when.apply($, requests).done(function() {
console.log('All requests finished, do something here...');
});
$.when(request1(), request2(), ... ,requestn()).done(function(res1, res2, ... , resn){
// what to do when I get all the response / when it finished
});
我曾经在堆栈溢出中找到这个答案,如果我能找到 link 我会把 link 放在下面。
注意:不要给我投票,我只是想帮忙,我只是从堆栈溢出的某个地方引用了这个。当我找到它时,我会把它放在 link :)