我需要對API進行2次調用,每個API都包含一些總數據,然後需要迭代。調用1獲取兩個jsonp對象:
[{
"id": 17,
"name": "A",
"campaign_code": "CAP20481"
},{
"id": 18,
"name": "B",
"campaign_code": "CAP20481"
}]
調用2使用第一次調用的ID來獲取整數。然後我需要相應的「名稱」和整數。到目前爲止,我有:
function getStoreCounts() {
var campaignID = $("input[title='Campaign ID']").val();
var storeLists = $.ajax({
type: "GET",
dataType: "jsonp",
url: "/apiIndex?callback=?&campaign_code=" + campaignID.toString(),
}),
storeCount = storeLists.then(function(data) {
$.each(data,function(i,storeList){
$.extend(storeList,{stores:''});
var getCount = $.ajax({
type: "GET",
dataType: "jsonp",
url: "/apiStoreCount?callback=?&list_id=" + storeList.id.toString(),
});
getCount.done(function(count) {
storeList.stores = count;
});
});
return data;
});
storeCount.done(function(data) {
console.log(data);
$.each(data,function(i,tierCount){
console.log("Tier: "+tierCount.name);
console.log("Stores: "+tierCount.stores);
});
});
}
在最後done
承諾的回報,當我退出整個數據陣列,我得到的存儲每個值對象不變。但是當我嘗試迭代數組中的每個對象時,我都缺少商店值。來自Chrome的附加輸出。
你的問題是因爲你沒有等待AJAX請求的第二循環返回'data'之前完成。您需要將這些承諾作爲數組返回並等待它們。另外請注意,如果您在單個請求中返回所有這些信息,這將會簡單得多(並且對您的服務器要求不高)。 –