Sobes.tech
Middle

Čo sú Web Workers a na čo sú potrebné?

sobes.tech AI

Odpoveď od AI

Web Workers umožňujú vykonávať operácie náročné na zdroje v pozadí, bez blokovania hlavného vlákna vykonávania JavaScriptu, ktoré je zodpovedné za vykresľovanie používateľského rozhrania. To zabraňuje zamrznutiu stránky a zlepšuje odozvu aplikácie, najmä pri práci s veľkými objemami dát, výpočtoch alebo sieťových požiadavkách.

Hlavné typy Worker:

  • Dedicated Worker: Vytvára sa pomocou new Worker('worker.js'). Funguje iba s stránkou, ktorá ho vytvorila, a je priamo riadený skriptom tejto stránky.
  • Shared Worker: Vytvára sa pomocou new SharedWorker('worker.js'). Môže byť prístupný z viacerých skriptov v rôznych oknách alebo záložkách toho istého zdroja.
  • Service Worker: Funguje ako proxy medzi prehliadačom a sieťou. Používa sa na cacheovanie zdrojov, autonómnu prácu a implementáciu push notifikácií.

Komunikácia medzi hlavným vláknom a Workerom prebieha asynchrónne prostredníctvom správ:

  • postMessage(): na odoslanie dát z jedného vlákna do druhého.
  • Handler udalosti onmessage: na prijímanie dát v inom vlákne.

Obmedzenia Web Workers:

  • Nemajú priame prístupy k DOM.
  • Nemajú prístup k objektom window a document.
  • Nemajú prístup k niektorým globálnym premenným a funkciám hlavného vlákna.

Príklad použitia Dedicated Worker:

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

worker.addEventListener('message', (event) => {
  console.log('Správa od Workera:', event.data);
});

worker.postMessage('Ahoj z hlavného vlákna!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('Správa z hlavného vlákna:', event.data);
  self.postMessage('Ahoj od Workera!');
});