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 JavaScripti kood taustel, eraldi brauseri põhivoo kõrval.

Eesmärk:

  • Ressurssinõudlike arvutuste teostamine ilma põhivoo blokeerimata, mis takistab kasutajaliidese hangumist.
  • Suurte andmete töötlemine või pikkade operatsioonide (näiteks parseldamine, tihendamine, võrgupäringud mõnel juhul) taustal.
  • Veebirakenduste jõudluse ja reageerimisvõime parandamine.

Veebitöötluste tüübid:

  1. Pühendatud töötlus: seotud selle käivitava skriptiga.
  2. Jagatud töötlus: võib olla jagatud mitme skripti vahel, mis töötavad erinevates akendes või vahekaartides samal domeenil.
  3. Teenuse töötlus: püüab võrgu päringuid, haldab vahemälu, tagab offline-juurdepääsu, toetab push-teavitusi.

Näide — pühendatud töötluse loomine ja kasutamine:

// main.js (peamine voog)
const worker = new Worker('worker.js');

// sõnumi saatmine töötlusele
worker.postMessage('Alustada rasket arvutust');

// sõnumi saamine töötluselt
worker.onmessage = function(event) {
  console.log('Saadud töötluselt:', event.data);
};

// worker.js (töötluse kood)
self.onmessage = function(event) {
  console.log('Saadud töötluses:', event.data);

  // raske arvutuse imitatsioon
  let result = 0;
  for (let i = 0; i < 1000000000; i++) {
    result += i;
  }

  // sõnumi saatmine tagasi põhivoogu
  self.postMessage('Arvutused lõpetatud, tulemus: ' + result);
};

Piirangud:

  • Otse DOM-ile juurdepääs ei ole võimalik.
  • Mõne globaalse muutuja kasutamine (näiteks window, document) on keelatud.
  • Side toimub asünkroonsete sõnumivahetuste kaudu (postMessage ja onmessage/addEventListener('message')).
  • Andmed edastatakse koopiate teel (struktureeritud kloonimisalgoritm), kuid suurte andmete puhul võib kasutada Transferable Objects, mis edastab viitega (kaotades juurdepääsu algsele voole).