Middle
Šta su web radnici i čemu služe?
sobes.tech АИ
Одговор од АИ
Web radnici su način za pokretanje JavaScript koda u pozadinskom thread-u, odvojen od glavnog UI thread-a pretraživača.
Svrha:
- Izvršavanje zahtevnih računanja bez blokiranja glavnog thread-a, čime se sprečava zamrzavanje interfejsa.
- Obrada velikih podataka ili izvođenje dugotrajnih operacija (npr. parsiranje, kompresija, mrežni zahtevi u nekim slučajevima) u pozadini.
- Poboljšanje performansi i odzivnosti veb aplikacija.
Tipovi web radnika:
- Dedicated Worker: Povezan je sa skriptom koja ga je kreirala.
- Shared Worker: Može biti podeljen između više skripti koje se izvršavaju u različitim prozorima ili karticama iste domene.
- Service Worker: Presreće mrežne zahteve, upravlja kešom, obezbeđuje offline pristup, podržava push obaveštenja.
Primer kreiranja i korišćenja Dedicated Workera:
// main.js (glavni thread)
const worker = new Worker('worker.js');
// Slanje poruke worker-u
worker.postMessage('Počni teška računanja');
// Primanje poruka od workera
worker.onmessage = function(event) {
console.log('Primljeno od workera:', event.data);
};
// worker.js (kod workera)
self.onmessage = function(event) {
console.log('Primljeno u workeru:', event.data);
// Simulacija teških računanja
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Slanje poruke nazad glavnom thread-u
self.postMessage('Računanja završena, rezultat: ' + result);
};
Ograničenja:
- Nema direktnog pristupa DOM-u.
- Nije moguće koristiti neke globalne promenljive glavnog thread-a (npr.
window,document). - Komunikacija se odvija putem asinhrone razmene poruka (
postMessageionmessage/addEventListener('message')). - Podaci između thread-ova se prenose kopiranjem (structured clone algoritam), ali za velike podatke mogu se koristiti
Transferable Objectsza prenos putem referenci (gubitak pristupa u originalnom thread-u).