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.onmessageesemé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ésdocumentobjektumokhoz. - 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!');
});