Web Worker
Вопрос
Что такое Web Worker и когда он нужен?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
отдельный поток без доступа к DOM
общение через postMessage, данные копируются структурным клонированием
нужен для тяжёлых вычислений, чтобы не блокировать отрисовку
передача больших буферов - через transferable, без копирования
накладные расходы на старт и обмен делают его бессмысленным для мелочи
Service Worker - другой зверь: прокси между страницей и сетью
Что могут спросить следом
- Как понять, что задача блокирует отрисовку
- Чем worker отличается от service worker
- Что нельзя передать через postMessage
Разбор
Worker - настоящий отдельный поток. У него нет доступа к DOM и window; общение идёт
через postMessage, а данные копируются структурным клонированием. Большие ArrayBuffer
можно передать без копирования, как transferable - но исходный станет недоступен.
Брать его стоит, когда есть счётная задача на сотни миллисекунд: разбор большого CSV, обработка изображения, криптография. Для мелких операций накладные расходы на запуск и сериализацию съедят выигрыш.
Service Worker - не про вычисления: это прокси между страницей и сетью, он даёт офлайн и кэширование.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.