Middle
Ce sunt Web Workers și pentru ce sunt folosiți?
sobes.tech AI
Răspuns de la AI
Web Workers permit efectuarea operațiunilor intensive în resurse în fire de fundal, fără a bloca firul principal de execuție JavaScript, care se ocupă de randarea interfeței utilizatorului. Acest lucru previne blocarea paginii și îmbunătățește răspunsul aplicației, mai ales atunci când se lucrează cu volume mari de date, calcule sau solicitări de rețea.
Tipuri principale de Worker:
- Worker dedicat: Creat cu
new Worker('worker.js'). Funcționează doar cu pagina care l-a creat și este gestionat direct din scriptul acestei pagini. - Shared Worker: Creat cu
new SharedWorker('worker.js'). Poate fi accesibil din mai multe scripturi din ferestre sau file diferite ale aceleiași surse. - Service Worker: Funcționează ca un proxy între browser și rețea. Este utilizat pentru cache-ul resurselor, funcționarea autonomă și implementarea notificărilor push.
Comunicarea între firul principal și Worker se face asincron prin mesaje:
postMessage(): pentru trimiterea datelor dintr-un fir în altul.- Handler-ul de evenimente
onmessage: pentru primirea datelor în alt fir.
Limitări ale Web Workers:
- Nu au acces direct la DOM.
- Nu au acces la obiectele
windowșidocument. - Nu au acces la unele variabile globale și funcții ale firului principal.
Exemplu de utilizare a unui Worker dedicat:
// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', (event) => {
console.log('Mesaj primit de la Worker:', event.data);
});
worker.postMessage('Salut din firul principal!');
// worker.js
self.addEventListener('message', (event) => {
console.log('Mesaj primit din firul principal:', event.data);
self.postMessage('Salut din Worker!');
});