我的情况是页面上有多个元素(从2到20),我需要对它们运行$ .each,里面有$ .ajax调用。 这一切都发生异步,当所有这些$ .ajax调用完成后,我需要继续编程......
实现这一目标的最佳方法是什么?
$。每个都是同步,但是当我在里面运行$ .ajax时,事情变得异步。 在我看来很难使用$ .when和$ .done,因为没有固定数量的ajax调用。
答案 0 :(得分:0)
将jqXhr Objects
存储在array
并使用jQuery.when
致电function.prototype.apply()
,将您的阵列用作$.when
的参数。
var deferreds = [];
for (i = 0; i < 10; i++) {
var jqxhr = $.ajax({
//ajax options
});
deferreds.push(jqxhr);
}
$.when.apply(this, deferreds).done(function(){
//This will wait for all ajax requests to finish before running
console.log(arguments); //arguments will contain the results of ajax requests
//...
});