Функция вызывается в JavaScript для обновления пользовательского интерфейса и IndexedDB - PullRequest
0 голосов
/ 28 марта 2020

У меня есть задача, где функция 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
        })
    }

Я не знаю заранее, сколько раз будет вызываться этот метод, а также не знаю, сколько времени между каждым вызовом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...