私は2つの機能を持っていますが、1つの機能は、データを取得するためのajax Web呼び出しを行うリロード機能です。もう1つはデータをロードするアイテムローダです。問題は、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;
};
コードを減らして質問に不可欠なものにすることはできますか? –
+1以上。コンテキストがありません。より一般的な方法でこの問題を説明してください。 –
申し訳ありませんが、コードを少し減らしました。var item = _ListData [index]; nullになり、問題です。関数reloadコールバックitemLookaheadCallbackはインデックス項目を十分に速く設定しません。 – user516883