Переформатировать большое количество изображений (600+) плавно - PullRequest
0 голосов
/ 03 июля 2018

Я работаю над веб-приложением, которое заполняет страницу большим количеством изображений.

По макету он похож на поиск изображений, так как пользователь выбирает некоторые настройки в верхней части страницы, и страница мгновенно заполняется изображениями, которые соответствуют его выбору.

Иногда в одном обратном вызове создается до 600+ изображений. Они являются элементами img с данными Uris, которые содержат встроенный svg.

Мой вопрос касается производительности. Сам Javascript завершается очень быстро, но после того, как 600 или около того изображений были добавлены в DOM, браузер может взять ПЯТНАДЦАТЬ СЕКУНД, чтобы завершить все повторы. Браузер замерзает на это время, меню перестают отвечать на запросы, и никакие изменения не отображаются до завершения перекомпоновки. (Версия для хрома 66) ​​

Можно ли как-нибудь устранить это узкое место и ускорить процесс перерисовки всех изображений? например, подход CSS, который делает макет тривиальным? Если бы я сделал все изображения одинакового размера, это помогло бы?

Если его нельзя ускорить, есть ли способ сделать перекомпоновку без блокировки взаимодействия пользователя со страницей?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 04 июля 2018

РЕШЕНИЕ. Причина, по которой браузер зависал во время всех перекомпоновок, заключалась в том, что мой код выполнялся синхронно и, следовательно, связывал браузер.

Выполнение асинхронного кода путем выполнения setTimeout(function, 0) для каждого изображения, где function добавляет изображение в DOM, решило проблему.

...