JQuery HTML-директива рендеринга слишком быстро? - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я разрабатываю приложение Electron, в котором я хочу, чтобы некоторые элементы в моем процессе рендеринга обновлялись, как только получен сигнал от основного процесса.Чтобы добиться этого, я изменяю .html() элемента div с помощью JQuery, проблема здесь в том, что кажется, что я вызываю .html() слишком быстро, поэтому некоторые элементы случайно отображаются неправильно.Вот мой код для основного процесса:

function onImportedWsiListRefreshed(e, _) {
    for (let i = 0; i < imported_wsi_list.length; i++) {
        if (imported_wsi_list[i].thumbnail == null) {
            imported_wsi_list[i].thumbnail = getWsiThumbnail(imported_wsi_list[i].path);
        }

        e.sender.send('main:onThumbnailUpdated', i, imported_wsi_list[i].thumbnail);
    }
}

И функция в процессе визуализации, которая получает сигнал и обновляет интерфейс:

function onThumbnailUpdated(sender, index, thumbnail_pth) {
    let wsi_list_frame = $('#wsi_list_frame').contents();
    wsi_list_frame.find(`#thumbnail_${index}`).html(
        `<img class="ui image" id="thumbnail_${index}" alt="thumbnail" src="${thumbnail_pth}" />`);
}

Я проверил и onThumbnailUpdatedполучить все сигналы, никаких проблем здесь, то же самое касается изображений, они правильно созданы.Но я подозреваю, что функция .html() вызывается слишком быстро, вот что я получаю в результате:

client

Как вы можете видеть некоторые изображенияотображаются правильно, но некоторые другие нет, и это очень случайно.Любая идея, как я могу преодолеть эту проблему?Я подумал, что, возможно, мне удастся найти способ поставить вызов в очередь на .html, чтобы они вызывались синхронно, но я уверен, что опытные разработчики js найдут лучшее решение, чем случайный взлом этой проблемы.Спасибо всем!

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