Web Workers

Выполнение JavaScript в фоновом потоке.

Зачем нужно

Позволяет запускать тяжёлые вычисления в отдельном потоке, не блокируя UI. Общение через postMessage. Нет доступа к DOM.

Где используется

  • Тяжёлые вычисления (парсинг, криптография)
  • Обработка больших данных (CSV, JSON)
  • Фоновая синхронизация и polling

Code

// main.js
const worker = new Worker('worker.js');

worker.postMessage({ data: largeArray });

worker.onmessage = (e) => {
  console.log('Result:', e.data);
};

worker.onerror = (e) => console.error(e.message);
worker.terminate; // принудительная остановка

// worker.js
self.onmessage = (e) => {
  const result = heavyComputation(e.data);
  self.postMessage(result);
};

// SharedWorker — один воркер на несколько вкладок
const shared = new SharedWorker('shared.js');
shared.port.postMessage('hello');
shared.port.onmessage = (e) => console.log(e.data);

Связанные темы

Ресурсы