У меня есть задача, где функция JS вызывается n раз из C#. Эта функция получает массив пользовательских объектов (это сложная структура, в которой моя модель JS содержит другие модели), и ее основное назначение - обновлять или вставлять данные в IndexedDb, и только после того, как эти данные будут сохранены, я должен вставить некоторые из них. данные в пользовательский интерфейс.
Пока я могу сохранять данные в IndexedDb, но когда я пытаюсь отобразить или обновить некоторые данные (список) в пользовательском интерфейсе, информация дублируется, а также теги id, которые не нужно говорить прерывает события клика. Важно сказать, что это работает, если вызывается только один раз. Это то, что я до сих пор. Кроме того, точка входа - от соединения signalR.
connection.on("InitializeDownload", function (messageInfo, customerId) {
requestData.initDownload(messageInfo, function (response) {
let mEnv = new DataModel()
let tMes = JSON.parse(response)
let detailsList = new Array();
mEnv.contId = tMes.contId;
mEnv.infoId = tMes.infoData;
if (tMes.ExtData != null) {
for (let i = 0; i < tMes.ExtData.length; i++) {
let tempArray = { ...messageDetails };
tempArray.message = tMes.ExtData[i].Message;
tempArray.UTC = tMes.ExtData[i].timestamp;
//more data processing
detailsList.push(tempArray);
}
}
mEnv.Details = detailsList;
//domCont is a list with several properties
domCont.messageItem.push(mEnv);
saveInIndexedDB();
});
});
//I have confirmed that this function is called as many times as connection "InitializeDownload"
//receives data
async function saveInIndexedDB() {
//console.log("called ")
var testIndexedDBReg = await putMes.initUpdate(domCont.messageItem.shift(), function () {
//some work will go here
});
//following code does not use promises is just a long function
var testUI = putMes.initUpdateUI(testIndexedDBReg, function () {
//some clean up work will go here
})
}
Я не знаю заранее, сколько раз будет вызываться этот метод, а также не знаю, сколько времени между каждым вызовом.