Sobes.tech
Middle

Ի՞նչ են Web Workers-ը և ինչու են դրանք անհրաժեշտ:

sobes.tech AI

Պատասխան AI-ից

Web Workers թույլ են տալիս իրականացնել ռեսուրսներ պահանջող օպերացիաներ ֆոնային հոսքերում, առանց խոչընդոտելու JavaScript-ի հիմնական հոսքը, որը պատասխանատու է օգտագործողի ինտերֆեյսի ռենդերին։ Սա կանխում է էջի կախվելը և բարելավում է հավելվածի արձագանքման արագությունը, հատկապես մեծ տվյալների ծավալների, հաշվարկների կամ ցանցային հարցումների դեպքում:

Հիմնական Worker տեսակները՝

  • Նվիրված Worker: Ստեղծվում է new Worker('worker.js')-ով։ Աշխատում է միայն այն էջի հետ, որը այն ստեղծել է, և անմիջապես կառավարվում է այդ էջի սցենարից։
  • Կիսօգտագործվող Worker: Ստեղծվում է new SharedWorker('worker.js')-ով։ Կարող է հասանելի լինել մի քանի սցենարներից տարբեր պատուհաններում կամ թաբերում նույն աղբյուրից։
  • Ծառայության Worker: Աշխատում է որպես պրոքսի միջնորդ բրաուզերի և ցանցի միջև։ Օգտագործվում է ռեսուրսների կեշավորման, ինքնավար աշխատանքի և push ծանուցումների իրականացման համար։

Հաղորդակցությունը հիմնական հոսքի և Worker-ի միջև կատարվում է ասինխրոն՝ հաղորդագրությունների միջոցով՝

  • postMessage(): տվյալների ուղարկում մեկ հոսքից մյուսին։
  • onmessage իրադարձության հսկիչը՝ տվյալների ստացման համար այլ հոսքում։

Web Workers սահմանափակումներ՝

  • Չեն ունենա ուղիղ մուտք DOM-ին։
  • Չեն ունենա մուտք window և document օբյեկտներին։
  • Չեն ունենա մուտք որոշ գլոբալ փոփոխականների և ֆունկցիաների հիմնական հոսքից։

Օրինակ՝ նվիրված Worker-ի օգտագործման:

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

worker.addEventListener('message', (event) => {
  console.log('Worker-ից ստացված հաղորդագրություն:', event.data);
});

worker.postMessage('Բարև հիմնական հոսքից!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('Հաղորդագրություն հիմնական հոսքից:', event.data);
  self.postMessage('Բարև Worker-ից!');
});