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:
- Dedicated Workers: seotud konkreetse lehega ja saadaval ainult sellele.
- Shared Workers: võivad olla saadaval mitmest lehtedest või vahelehtedest ühes domeenis.
- 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öötlejatonmessage. 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);
};