intermediate
Web Workers
Выносите CPU-heavy работу с main thread через message passing, structured cloning, transferables и ограничения workers.
Web Workers выполняют JavaScript вне main thread, поэтому тяжёлый parse, сжатие, поиск или анализ не блокируют ввод и рендеринг. Обмен через postMessage со structured clone или transferables. У workers нет доступа к DOM — UI остаётся на main thread.
const worker = new Worker('/search.worker.js');
worker.postMessage({ query, buffer }, [buffer]); // transferable без копии
worker.onmessage = (event) => renderResults(event.data.hits);
Старт и сериализация могут перевесить пользу для мелких задач. Shared memory требует явной синхронизации и проверки поддержки.
На интервью: когда workers помогают, почему мелкая работа вредит и как transferables избегают копирования буферов.
Типовые ошибки: workers не лечат медленный DOM; overhead сериализации на малых задачах.
Компромисс: удобство против контроля — выбирайте механизм под вашу связность и бюджет производительности.
Чеклист:
- CPU-работа, не DOM-обновления.
- Transferables для крупных ArrayBuffer.
- Завершайте простаивающие workers.
- Измеряйте end-to-end latency.