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.