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
windowadocument. - 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!');
});