Middle
Co jsou Web Workers a k čemu slouží?
sobes.tech AI
Odpověď od AI
Web Workers umožňují provádět náročné operace na pozadí v threadech, aniž by blokovaly hlavní vlákno JavaScriptu, které je zodpovědné za vykreslování uživatelského rozhraní. To zabraňuje zamrznutí stránky a zlepšuje odezvu aplikace, zejména při práci s velkými objemy dat, výpočty nebo síťovými požadavky.
Hlavní typy Worker:
- Dedicated Worker: Vytvoří se pomocí
new Worker('worker.js'). Funguje pouze s stránkou, která ho vytvořila, a je přímo řízen skriptem této stránky. - Shared Worker: Vytvoří se pomocí
new SharedWorker('worker.js'). Může být přístupný z více skriptů v různých oknech nebo záložkách stejného zdroje. - Service Worker: Funguje jako proxy mezi prohlížečem a sítí. Používá se pro cachování zdrojů, autonomní práci a implementaci push notifikací.
Komunikace mezi hlavním vláknem a Workerem probíhá asynchronně přes zprávy:
postMessage(): pro odeslání dat z jednoho vlákna do druhého.onmessageobsluha událostí: pro příjem dat v jiném vlákně.
Omezení Web Workers:
- Nemají přímý přístup k DOM.
- Nemají přístup k objektům
windowadocument. - Nemají přístup k některým globálním proměnným a funkcím hlavního vlákna.
Příklad použití Dedicated Worker:
// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', (event) => {
console.log('Obdržená zpráva od Workera:', event.data);
});
worker.postMessage('Ahoj z hlavního vlákna!');
// worker.js
self.addEventListener('message', (event) => {
console.log('Obdržená zpráva z hlavního vlákna:', event.data);
self.postMessage('Ahoj z Workera!');
});