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);