Sobes.tech
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 threa­dech, 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.
  • onmessage obsluha 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 window a document.
  • 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!');
});