В настоящее время я разрабатываю приложение 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](https://i.stack.imgur.com/j4D5u.png)
Как вы можете видеть некоторые изображенияотображаются правильно, но некоторые другие нет, и это очень случайно.Любая идея, как я могу преодолеть эту проблему?Я подумал, что, возможно, мне удастся найти способ поставить вызов в очередь на .html
, чтобы они вызывались синхронно, но я уверен, что опытные разработчики js найдут лучшее решение, чем случайный взлом этой проблемы.Спасибо всем!