Čo je Web Worker?
Web Worker je mechanizmus prehliadača, ktorý umožňuje spúšťať JavaScript v samostatnom vlákne oddelenom od hlavného vlákna stránky. Výpočtovo náročné operácie tak neblokujú užívateľské rozhranie a stránka zostáva plynulá. Komunikácia s hlavným vláknom prebieha cez postMessage API.
Definícia Web Worker
Čo je Web Worker
Web Worker je JavaScript API, ktoré umožňuje spúšťať skripty v pozadí v samostatnom vlákne (thread) operačného systému. Hlavné vlákno prehliadača (main thread) je zodpovedné za vykresľovanie stránky, spracovanie udalostí a vykonávanie JavaScriptu — ak je zaťažené náročným výpočtom, stránka zamrzne. Web Worker rieši tento problém presunutím náročných operácií do pozadia.
Typy Web Workerov
- Dedicated Worker — najčastejší typ, patrí jednému skriptu a komunikuje len s ním
- Shared Worker — zdieľaný medzi viacerými stránkami/tabmi rovnakej domény
- Service Worker — špeciálny typ pre offline podporu a sieťovú proxy
Obmedzenia Web Workera
- Žiadny prístup k DOM — Worker nemôže manipulovať s HTML elementmi stránky
- Žiadny prístup k window objektu — nemá prístup k localStorage, cookies ani document
- Komunikácia cez správy — dáta sa prenášajú cez
postMessage()aonmessage - Vlastný globálny kontext — namiesto
windowpoužívaself
Napriek obmedzeniam Worker môže používať fetch(), WebSocket, IndexedDB a väčšinu webových API.
Praktický príklad
Príklad: Webový editor fotografií potrebuje aplikovať filter na obrázok s rozlíšením 4000x3000 px — spracovanie 12 miliónov pixelov.
Bez Web Workera výpočet trvá 2 sekundy, počas ktorých stránka úplne zamrzne — tlačidlá nereagujú, animácie sa zastavia.
S Web Workerom sa pixelové dáta pošlú do pozadí cez postMessage(). Worker spracuje filter a vráti výsledok. Počas 2-sekundového výpočtu stránka zostáva plne interaktívna — používateľ môže scrollovať, klikať a UI animácie bežia plynule.
Často kladené otázky
Čo je Web Worker?
Web Worker je mechanizmus prehliadača na spúšťanie JavaScriptu v samostatnom vlákne. Umožňuje vykonávať náročné výpočty bez blokovania užívateľského rozhrania. Komunikácia s hlavným vláknom prebieha cez správy.
Kedy použiť Web Worker?
Web Worker je vhodný pre výpočtovo náročné úlohy: spracovanie obrázkov, šifrovanie, parsovanie veľkých JSON súborov, komplexné algoritmy alebo real-time dátové analýzy. Nie je potrebný pre jednoduché operácie.
Aký je rozdiel medzi Web Worker a Service Worker?
Web Worker vykonáva výpočty v pozadí a existuje len kým je stránka otvorená. Service Worker funguje ako sieťová proxy, beží aj po zatvorení stránky a je základom pre offline funkčnosť a push notifikácie.
Súvisiace pojmy
Potrebujete pomôcť s webom?
Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.