Sobes.tech
Middle

Šta su Web Workers i čemu služe?

sobes.tech АИ

Одговор од АИ

Web Workers omogućavaju izvršavanje operacija koje zahtevaju mnogo resursa u pozadinskim nitima, bez blokiranja glavne nitne izvršavanja JavaScript-a, koja je odgovorna za renderovanje korisničkog interfejsa. Ovo sprečava zamrzavanje stranice i poboljšava odzivnost aplikacije, posebno pri radu sa velikim količinama podataka, računanjima ili mrežnim zahtevima.

Glavne vrste Worker:

  • Dedicated Worker: Kreira se pomoću new Worker('worker.js'). Radi samo sa stranicom koja ga je kreirala i direktno se upravlja iz skripte te stranice.
  • Shared Worker: Kreira se pomoću new SharedWorker('worker.js'). Može biti dostupan iz više skripti u različitim prozorima ili karticama istog izvora.
  • Service Worker: Funkcioniše kao proxy između pretraživača i mreže. Koristi se za keširanje resursa, autonomni rad i implementaciju push obaveštenja.

Komunikacija između glavne niti i Worker-a odvija se asinhrono putem poruka:

  • postMessage(): za slanje podataka iz jedne niti u drugu.
  • Handler događaja onmessage: za primanje podataka u drugoj niti.

Ograničenja Web Workers:

  • Nemaju direktan pristup DOM-u.
  • Nemaju pristup objektima window i document.
  • Nemaju pristup nekim globalnim promenljivima i funkcijama glavne niti.

Primer korišćenja Dedicated Worker:

// main.js
const worker = new Worker('worker.js');

worker.addEventListener('message', (event) => {
  console.log('Poruka od Workera:', event.data);
});

worker.postMessage('Zdravo iz glavne niti!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('Poruka iz glavne niti:', event.data);
  self.postMessage('Zdravo od Workera!');
});