Sobes.tech
Middle

Mi az a Web Workers és mire használják őket?

sobes.tech MI

Válasz az MI-től

A Web Workers lehetővé teszik erőforrás-igényes műveletek végrehajtását háttérszálakon, anélkül, hogy blokkolnák a JavaScript fő végrehajtási szálát, amely a felhasználói felület rendereléséért felelős. Ez megakadályozza az oldal lefagyását, és javítja az alkalmazás válaszkészségét, különösen nagy adatmennyiségek, számítások vagy hálózati kérések esetén.

A Worker fő típusai:

  • Dedikált Worker: new Worker('worker.js') segítségével hozható létre. Csak azzal az oldallal működik, amelyik létrehozta, és közvetlenül az oldal szkriptjéből kezelhető.
  • Megosztott Worker: new SharedWorker('worker.js') segítségével hozható létre. Több szkriptből érhető el különböző ablakokban vagy lapokban ugyanarról a forrásról.
  • Service Worker: Proxyként működik a böngésző és a hálózat között. Erőforrások cache-elésére, autonóm működésre és push értesítések megvalósítására használják.

A fő szál és a Worker közötti kommunikáció aszinkron módon történik üzenetek segítségével:

  • postMessage(): adatok küldése egyik szálról a másikra.
  • onmessage eseménykezelő: adatok fogadása másik szálon.

A Web Workers korlátozásai:

  • Nincs közvetlen hozzáférés a DOM-hoz.
  • Nincs hozzáférés a window és document objektumokhoz.
  • Nincs hozzáférés néhány globális változóhoz és funkcióhoz a fő szálon.

Dedikált Worker használatának példája:

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

worker.addEventListener('message', (event) => {
  console.log('Üzenet a Worker-től:', event.data);
});

worker.postMessage('Szia a fő szálról!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('Üzenet a fő szálról:', event.data);
  self.postMessage('Szia a Worker-től!');
});