我有一個數組,它可以容納未知數量的索引。每個索引用於通過ajax
呼叫發送數據。我正在通過for loop
收集成功調用的數據並將其推入空數組。在未知數量的調用結束時,我需要在我的視圖中使用新聚集的數組。 newDataArray
在循環完成之前在底部執行,因此它仍然是空的。我如何完成所有的電話,然後做底部的事情?在執行下一步之前需要進行多個異步調用JS
如果有幫助,我正在使用Flux模式進行React。但是同樣的問題可能不會在React中完成。這裏是什麼,我試圖做一個模擬樣本:
JS
case 'execute-calls':
//This is the new array to push to
var newDataArray = [];
//Url to call
var url = 'http://dev.markitondemand.com/Api/v2/Quote/jsonp';
for(let i = 0; i < payload.data.length; i++){
//given array of data that needs to be sent with call
let symb = { symbol: payload.data[i]};
$.ajax({
data: symb,
url: url,
dataType: "jsonp",
})
.done(function(data){
let updatedData = {
//...data that is stored from response
};
newDataArray.push(updatedData);
})
.fail(function(error){
//console.log(error);
});
}
//This will be updating the state object which is above the switch cases
//However this is ran before the end of the loops so newDataArray is empty
var updateTicker = {
updatedTicker: true,
updatedTickerSymbols: newDataArray
};
assign(stockData,updateTicker);
getStockData.emitChange();
break;
這種方式似乎最直觀:
如果您使用ES6這是更優雅[修訂包括失敗()調用]
。感謝你的回答。你如何看到從響應中是否發生錯誤?它會被存儲在其中一個索引中嗎? '$ .when.apply($,deferreds).done(function(response){'那裏的控制檯日誌記錄響應會顯示錯誤? – Chipe
好點,還有一個失敗的回調函數,當遇到第一個錯誤時會調用它我相應地更新了代碼。 –