Sobes.tech
Middle

Mis on veebitöötlused ja milleks need on vajalikud?

sobes.tech AI

Vastus AI-lt

Veebitöötlused — see on viis käivitada skripte taustajärkudes, mis on eraldatud põhiliidesest.

Nende peamised eesmärgid:

  • Jõudluse parandamine: ressurssinõudlike ülesannete (keerukad arvutused, suurte andmemahtude töötlemine, parsimine) üleviimine põhijärgust, mis vastutab kasutajaliidese joonistamise ja kasutaja sündmuste töötlemise eest. See takistab lehe „hangumist“ ja parandab rakenduse reageerimisvõimet.
  • Paralleelsus: võimalus täita mitu ülesannet samaaegselt, tõhusamalt kasutades mitme tuumaga protsessoreid.

On olemas kolm tüüpi veebitöötlusi:

  1. Dedicated Workers: seotud konkreetse lehega ja saadaval ainult sellele.
  2. Shared Workers: võivad olla saadaval mitmest lehtedest või vahelehtedest ühes domeenis.
  3. Service Workers: töötavad nagu võrguprotokollid, püüdes võrgu päringuid ja võimaldades rakendada offline-funktsionaalsust, teateid ja muid progressiivsete veebirakenduste (PWA) võimalusi.

Töö põhimõtted:

  • Eraldiseisev kontekst: töötlusel on oma globaalne objekt ja juurdepääs brauseri API-dele (pole juurdepääsu DOM-ile, window, document, parent).
  • Sõnumite vahetamine: suhtlus põhijärgu ja töötluse vahel toimub sõnumite kaudu, kasutades postMessage() ja sündmuse töötlejat onmessage. Andmed edastatakse väärtusena (kopeeritakse) või lingina (Transferable Objects).

Näide Dedicated Worker kasutamisest:

// main.js (põhijärgu)
const worker = new Worker('worker.js'); // Töötluse loomine

worker.onmessage = (event) => {
  // Sõnumi töötlemine töötlusest
  console.log('Saadud töötlusest:', event.data);
};

worker.postMessage('Alustada keerulist operatsiooni'); // Sõnumi saatmine töötlusele
// worker.js (töötluse fail)
onmessage = (event) => {
  // Sõnumi töötlemine põhijärgust
  console.log('Saadud põhijärgust:', event.data);

  // Keeruka ülesande täitmine
  let result = 0;
  for (let i = 0; i < 1000000000; i++) {
    result += i;
  }

  // Tulemuse tagastamine
  postMessage(result);
};