Разбейте длительную работу на небольшие части и планируйте следующую через setTimeout, чтобы завершать текущую задачу event loop.
Как можно использовать setTimeout, чтобы дать браузеру возможность отрисовать UI между частями работы?
Разбейте длительную работу на небольшие части и планируйте следующую через setTimeout, чтобы завершать текущую задачу event loop.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Разбейте длительную работу на небольшие части и планируйте следующую через setTimeout, чтобы завершать текущую задачу event loop.
setTimeout(nextChunk, 0) даёт браузеру возможность обработать ввод и rendering между задачами, но не гарантирует кадр перед каждым callback. Сами chunks должны быть короткими. Promise.resolve().then не является таким уступанием, поскольку добавляет microtask; для тяжёлых вычислений лучше Worker.
Источник: html.spec.whatwg.org.