AJAX - 顺序更新的并行调用?

时间:2015-04-20 11:51:12

标签: javascript jquery ajax

我有一张桌子。最初它是空白的。总共应该有10行。为此,每行必须进行ajax调用并获取数据。共有10个并行的AJAX调用。并且还要求按顺序更新行。这意味着即使第5行的数据在2之前,第5行数据也不会更新,直到更新第2,3和4行。我们如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

一种解决方案可能是使用jQuery的promise接口,同时使用$.whenapply传递一系列承诺:

var urls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// return a promise for each url
function getData(url) {
  return $.ajax({
    url: url
  });
}

// return an array of promises
function getPromises(urls) {
  return urls.map(function (url) {
    return getData(url);
  });
}

// when all the promises have been returned loop over the returned
// data and update the table sequentially with each row
$.when.apply(null, getPromises(urls)).then(function () {
  for (var i = 0, l = arguments.length; i < l; i++) {
    // update row with the data from arguments[i]
  }
});

请注意,我没有测试过此代码,但这肯定是我尝试采用的路线。