Middle
Kas yra Web Workers ir kam jie skirti?
sobes.tech AI
Atsakymas iš AI
Žiniatinklio darbuotojai leidžia vykdyti išteklių reikalaujančias operacijas foniniuose srautuose, neblokiruojant pagrindinio JavaScript vykdymo srauto, kuris atsakingas už vartotojo sąsajos atvaizdavimą. Tai užkerta kelią puslapio užšalimui ir pagerina programėlės reagavimą, ypač dirbant su dideliais duomenų kiekiais, skaičiavimais ar tinklo užklausomis.
Pagrindiniai darbuotojų tipai:
- Dedicated Worker: Sukuriamas naudojant
new Worker('worker.js'). Veikia tik su ta pačia puslapio dalimi ir yra valdomas tiesiogiai iš šios puslapio skripto. - Shared Worker: Sukuriamas naudojant
new SharedWorker('worker.js'). Gali būti prieinamas keliems skriptams iš skirtingų langų ar skirtukų to paties šaltinio. - Service Worker: Veikia kaip tarpininkas tarp naršyklės ir tinklo. Naudojamas resursų talpinimui, autonominiam veikimui ir pranešimų siuntimui.
Pagrindinis ryšys tarp pagrindinio srauto ir Worker vyksta asinchroniškai per žinutes:
postMessage(): duomenų siuntimui iš vieno srauto į kitą.onmessageįvykio tvarkyklė: duomenų gavimui kitame sraute.
Žiniatinklio darbuotojų apribojimai:
- Neturi tiesioginės prieigos prie DOM.
- Neturi prieigos prie
windowirdocumentobjektų. - Neturi prieigos prie kai kurių pagrindinio srauto globalių kintamųjų ir funkcijų.
Pavyzdys, kaip naudoti Dedicated Worker:
// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', (event) => {
console.log('Gauta žinutė iš Worker:', event.data);
});
worker.postMessage('Sveiki iš pagrindinio srauto!');
// worker.js
self.addEventListener('message', (event) => {
console.log('Gauta žinutė iš pagrindinio srauto:', event.data);
self.postMessage('Sveiki iš Worker!');
});