Ответ вслух Middle Web API и воркеры обновлено

Web Worker

Вопрос

Что такое Web Worker и когда он нужен?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Worker - настоящий отдельный поток. У него нет доступа к DOM и window; общение идёт через postMessage, а данные копируются структурным клонированием.

Что должно прозвучать в ответе

  • отдельный поток без доступа к DOM

  • общение через postMessage, данные копируются структурным клонированием

  • нужен для тяжёлых вычислений, чтобы не блокировать отрисовку

  • передача больших буферов - через transferable, без копирования

  • накладные расходы на старт и обмен делают его бессмысленным для мелочи

  • Service Worker - другой зверь: прокси между страницей и сетью

Что могут спросить следом

  • Как понять, что задача блокирует отрисовку
  • Чем worker отличается от service worker
  • Что нельзя передать через postMessage

Разбор

Worker - настоящий отдельный поток. У него нет доступа к DOM и window; общение идёт через postMessage, а данные копируются структурным клонированием. Большие ArrayBuffer можно передать без копирования, как transferable - но исходный станет недоступен.

Брать его стоит, когда есть счётная задача на сотни миллисекунд: разбор большого CSV, обработка изображения, криптография. Для мелких операций накладные расходы на запуск и сериализацию съедят выигрыш.

Service Worker - не про вычисления: это прокси между страницей и сетью, он даёт офлайн и кэширование.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме