我有一张桌子。最初它是空白的。总共应该有10行。为此,每行必须进行ajax调用并获取数据。共有10个并行的AJAX调用。并且还要求按顺序更新行。这意味着即使第5行的数据在2之前,第5行数据也不会更新,直到更新第2,3和4行。我们如何实现这一目标?
答案 0 :(得分:1)
一种解决方案可能是使用jQuery的promise接口,同时使用$.when
向apply
传递一系列承诺:
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]
}
});
请注意,我没有测试过此代码,但这肯定是我尝试采用的路线。