Sobes.tech
Middle

Co jsou webové pracovníci a k čemu slouží?

sobes.tech AI

Odpověď od AI

Webové pracovníky jsou způsob, jak spouštět skripty na pozadí v samostatných vláknech, oddělených od hlavního vlákna uživatelského rozhraní.

Jejich hlavní účel:

  • Zvýšení výkonu: Přesun náročných úkolů (složitých výpočtů, zpracování velkých objemů dat, parsing) z hlavního vlákna, které je zodpovědné za vykreslování rozhraní a zpracování událostí uživatele. To zabraňuje zamrznutí stránky a zlepšuje odezvu aplikace.
  • Paralelismus: Umožňuje současné provádění více úkolů, efektivněji využívající vícejádrové procesory.

Existují tři typy webových pracovníků:

  1. Dedicated Workers: Jsou spojeni s konkrétní stránkou a jsou dostupní pouze pro ni.
  2. Shared Workers: Mohou být dostupní z více stránek nebo záložek stejné domény.
  3. Service Workers: Fungují jako proxy sítě, zachycují síťové požadavky a umožňují implementaci offline funkcí, push oznámení a dalších schopností progresivních webových aplikací (PWA).

Principy práce:

  • Samostatný kontext: Worker má svůj vlastní globální objekt a přístup k podmnožině API prohlížeče (bez přístupu k DOM, window, document, parent).
  • Výměna zpráv: Interakce mezi hlavním vláknem a workerem probíhá prostřednictvím zpráv s postMessage() a obslužníku událostí onmessage. Data jsou přenášena hodnotou (kopírována) nebo odkazem (Transferable Objects).

Příklad použití Dedicated Worker:

// main.js (hlavní vlákno)
const worker = new Worker('worker.js'); // Vytvoření workeru

worker.onmessage = (event) => {
  // Zpracování zprávy od workeru
  console.log('Obdrženo od workeru:', event.data);
};

worker.postMessage('Zahájit složitou operaci'); // Odeslání zprávy workeru
// worker.js (soubor workeru)
onmessage = (event) => {
  // Zpracování zprávy z hlavního vlákna
  console.log('Obdrženo z hlavního vlákna:', event.data);

  // Provádění složité úlohy
  let result = 0;
  for (let i = 0; i < 1000000000; i++) {
    result += i;
  }

  // Odeslání výsledku zpět
  postMessage(result);
};