我有兩個函數,一個函數是一個重載函數,它執行ajax Web調用來獲取數據。另一個是加載數據的項目加載器。問題在於加載數據項的函數由於ajax調用而沒有值。無論如何修復這個除了調用setTimeout?預先感謝您的幫助。javascript競爭條件問題
function reload(index) {
_ListData[index] = null;
DisplayInformation.GetTemplateTableInformation(
ListManager.listReportId(),
ListManager.listParameters(),
ListManager.listSortParams(),
TableReportHelper_TemplateRelatedAction,
reloadRange.min,
reloadRange.num,
function(templateItemIfo) {//success callback causes issues with race conditon in the function itemLookaheadCallback because _ListData[index] = null;
itemLookaheadCallback(templateItemIfo, index);
});
}
這裏是一個嘗試加載被稱爲於重載回調
function loadDataCallback(lookAheadData, index, loadNeighbors) {
//Store the received value
var item = _ListData[index];//this will be null because of _ListData[index] = null;
item.data = lookAheadData.TemplateInformation;
};
你可以減少你的代碼只是問題的本質嗎? – 2012-02-03 16:17:32
+1以上。缺少上下文。用更通用的方式描述這個問題。 – 2012-02-03 16:24:11
對不起,我簡化了代碼一行var item = _ListData [index];將是空的,這就是問題所在。函數重載回調itemLookaheadCallback不會足夠快地設置索引項目。 – user516883 2012-02-03 16:26:24