В чем разница между воркерами

«В чем разница между воркерами» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Воркеры (workers) в вебе позволяют выполнять код в фоновых потоках, не блокируя основной поток UI. Основные типы:

  1. Web Workers - выполняют скрипты в отдельном потоке. Не имеют доступа к DOM, но могут общаться с основным потоком через postMessage.
// main.js
const worker = new Worker('worker.js');
worker.postMessage('Hello');
worker.onmessage = (e) => console.log(e.data);

// worker.js
onmessage = (e) => postMessage(`Worker received: ${e.data}`);
  1. Service Workers - прокси между браузером и сетью. Используются для кэширования, push-уведомлений, оффлайн-работы. Работают в своем контексте.

  2. Shared Workers - доступны из нескольких вкладок/окон одного origin.

Основные ограничения: нет доступа к DOM, ограниченный набор API, необходимость сериализации данных при передаче.