jQuery当$ .each(有$ .ajax)完成后,运行函数

时间:2016-08-09 23:05:38

标签: jquery ajax

我的情况是页面上有多个元素(从2到20),我需要对它们运行$ .each,里面有$ .ajax调用。 这一切都发生异步,当所有这些$ .ajax调用完成后,我需要继续编程......

实现这一目标的最佳方法是什么?

$。每个都是同步,但是当我在里面运行$ .ajax时,事情变得异步。 在我看来很难使用$ .when和$ .done,因为没有固定数量的ajax调用。

1 个答案:

答案 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
  //...
});