Middle
Čo sú weboví pracovníci a na čo slúžia?
sobes.tech AI
Odpoveď od AI
Webové pracovníky sú spôsob, ako spúšťať kód JavaScript na pozadí, oddelený od hlavného vlákna používateľského rozhrania prehliadača.
Účel:
- Vykonávať náročné výpočty bez blokovania hlavného vlákna, čím sa zabraňuje zamrznutiu rozhrania.
- Spracovávať veľké dáta alebo vykonávať dlhé operácie (napríklad parsing, kompresia, sieťové požiadavky v niektorých prípadoch) na pozadí.
- Zlepšiť výkon a odozvu webových aplikácií.
Typy webových pracovníkov:
- Dedicated Worker: Je spojený so skriptom, ktorý ho vytvoril.
- Shared Worker: Môže byť zdieľaný medzi viacerými skriptami, ktoré bežia v rôznych oknách alebo záložkách tej istej domény.
- Service Worker: Zachytáva sieťové požiadavky, spravuje cache, poskytuje offline prístup, podporuje push notifikácie.
Príklad vytvorenia a použitia Dedicated Workera:
// main.js (hlavné vlákno)
const worker = new Worker('worker.js');
// Odoslanie správy workerovi
worker.postMessage('Začať ťažké výpočty');
// Prijímanie správ od workera
worker.onmessage = function(event) {
console.log('Prijaté od workera:', event.data);
};
// worker.js (kód workera)
self.onmessage = function(event) {
console.log('Prijaté vo workeri:', event.data);
// Simulácia ťažkých výpočtov
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Odoslanie správy späť do hlavného vlákna
self.postMessage('Výpočty ukončené, výsledok: ' + result);
};
Obmedzenia:
- Žiadny priamy prístup k DOM.
- Nie je možné používať niektoré globálne premenné hlavného vlákna (napríklad
window,document). - Komunikácia prebieha prostredníctvom asynchrónnej výmeny správ (
postMessageaonmessage/addEventListener('message')). - Dáta medzi vláknami sa prenášajú kopírovaním (structured clone algoritmus), ale pre veľké dáta je možné použiť
Transferable Objectsna prenos odkazom (strata prístupu v pôvodnom vlákne).