Sobes.tech
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:

  1. Dedicated Worker: Povezan je sa skriptom koja ga je kreirala.
  2. Shared Worker: Može biti podeljen između više skripti koje se izvršavaju u različitim prozorima ili karticama iste domene.
  3. 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 (postMessage i onmessage/addEventListener('message')).
  • Podaci između thread-ova se prenose kopiranjem (structured clone algoritam), ali za velike podatke mogu se koristiti Transferable Objects za prenos putem referenci (gubitak pristupa u originalnom thread-u).