1 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您捕獲每個(gè) AJAX 請求生成的 Promise(技術(shù)上講是一個(gè) jQuery Deferred 對(duì)象),并將它們添加到一個(gè)數(shù)組中,那么您可以.when()在所有 Promise 被解析后調(diào)用以執(zhí)行一些代碼。像這樣的東西(未經(jīng)測試):
var myItems = myObj.items;
var promises = [];
$(myItems).each(function(index, item) {
var itemUrl = '/somestuff/' + item.url + '.js';
var p = $.getJSON(itemUrl);
p.then(function(itemData) {
item.data = itemData;
return itemData;
});
promises.push(p);
});
$.when.apply($, promises).then(function() { //render data to template...
這可能比鏈接 done() 回調(diào)更可取,因?yàn)樗匀辉试S請求并行執(zhí)行,這可能會(huì)更快(盡管這在某種程度上取決于服務(wù)器,但這是一個(gè)單獨(dú)的問題)。
添加回答
舉報(bào)