Kaip naudoti žiniatinklio darbuotojus daugiasriegiui „JavaScript“?

Kaip Naudoti Ziniatinklio Darbuotojus Daugiasriegiui Javascript



„JavaScript“ yra keletas būdų, kaip pagerinti bendrą svetainės vartotojo sąsają. The „Žiniatinklio darbuotojas“ yra vienas iš tokių metodų, leidžiančių pagrindinei gijai tęsti jos neužblokavimą. Jį sudaro atskiras „JavaScript“ variklio egzempliorius, todėl jis negali pasinaudoti pagrindinės gijos funkcijomis.

Šiame straipsnyje bus aptarta, kaip naudoti „Žiniatinklio darbuotojas“ kelių gijų kūrimui JavaScript.







Kas yra žiniatinklio darbuotojai?

„Žiniatinklio darbuotojai“ atitinka naršyklės API, kuri įgalina JavaScript vykdyti užduotis lygiagrečiai / tuo pačiu metu atskiroje / tam skirtoje gijoje.



Kam reikalingi žiniatinklio darbuotojai?

Kadangi JavaScript yra vienos gijos, todėl sudėtingi JavaScript kodai blokuoja vartotojo sąsajos giją, t. y. sustabdo pagrindinį langą, kuris atlieka visas atnaujinimo, vartotojo įvesties įvykių ir tt užduotis. Tokiu atveju nukenčia vartotojo patirtis. . Norėdami išspręsti šią problemą, „Žiniatinklio darbuotojas“ įsigalioja ir pašalina vartotojo sąsajos gijos blokavimą.



Kaip naudoti žiniatinklio darbuotojus kelių gijų kūrimui naudojant „JavaScript“?

Norėdami pagaminti a „Žiniatinklio darbuotojas“ , naudokite konstruktorių Darbuotojas. Jis yra toks, kad kaip argumentą pasirenka URL, atitinkantį darbuotojo scenarijaus failo kelią, įgyvendinantį norimą funkciją. Tačiau norėdami įtraukti darbuotojo kodą į HTML failą, naudokite a 'dėmė' rašyti darbuotojo kodą.





Sintaksė (žiniatinklio darbuotojo kūrimas)

konst x = naujas Darbininkas ( 'darbininkas.js' ) ;

Sintaksė (pranešimo siuntimas darbuotojui)



konst x = naujas Darbininkas ( 'darbininkas.js' ) ;

Sintaksė (pranešimo iš darbuotojo gavimas)

x. žinute = funkcija ( įvykis ) {
konsolė. žurnalas ( įvykis. duomenis ) ;
} ;

Pavyzdys: „Web Worker“ naudojimas norint apskaičiuoti skaičiaus faktorių „JavaScript“.
Toliau pateiktame pavyzdyje naudojama „Darbininkas ()“ konstruktorius, skirtas sukurti žiniatinklio darbuotoją ir apskaičiuoti skaičiaus faktorialą:

DOCTYPE html >
< html >
< galva >
< h2 stilius = 'teksto lygiavimas: centre;' > Interneto darbuotojų pavyzdys h2 >
galva >
< kūnas >
< scenarijus >
konst x = naujas Darbininkas ( URL. CreateObjectURL ( naujas Blob ( [
`
// Darbo scenarijus
konst faktas = ( n ) => {
jeigu ( n == 0 || n == 1 ) {
grąžinti 1n ;
}
Kitas {
grąžinti BigInt ( n ) * faktas ( BigInt ( n ) - 1n ) ;
}
} ;
savarankiškai. žinute = ( įvykis ) => {
konst Su = faktas ( įvykis. duomenis ) ;
savarankiškai. postMessage ( Su. toString ( ) ) ;
} ; `
] , { tipo : 'tekstas/javascript' } ) ) ) ;
x. postMessage ( 15n ) ;
x. žinute = ( įvykis ) => {
konst išeiti = įvykis. duomenis ;
konsolė. žurnalas ( „Factory of 15 Via Web Worker->“ , išeiti ) ;
} ;

kūnas >

html >

Šiame kode atlikite šiuos veiksmus:

  • Pirmiausia nurodykite nurodytą antraštę.
  • Po to sukurkite a „Žiniatinklio darbuotojas“ objektas, turintis „Blob“ objekto URL, kurį sudaro darbuotojo kodas.
  • Darbuotojui skirtas kodas yra įtrauktas į anoniminę funkciją, kuri apskaičiuoja skaičiaus faktorialą per rekursinę funkciją.
  • Be to, darbuotojas klausosi pranešimų, siunčiamų per pagrindinę giją, naudodamas „self.onmessage“ įvykis, nuskaito perduoto skaičiaus faktorialą ir pateikia rezultatą pagrindinei gijai per „postMessage()“ metodas.
  • Pagrindinėje gijoje sukurkite darbuotojo egzempliorių ir išsiųskite jam pranešimą numeriu ' 15n “. Čia, ' n “ reiškia „BigInt“ reikšmę.
  • Kai darbuotojas baigia apskaičiuoti faktorialą, jis siunčia rezultatą / rezultatą atgal į pagrindinę giją, naudodamas „postMessage()“ metodas.
  • Galiausiai, pagrindinė gija gauna / gauna rezultatą 'žinutė' įvykį ir grąžina atitinkamą skaičiaus faktorių konsolėje.

Išvestis

Web Workers pranašumai

Lygiagretus apdorojimas : jei tas pats kodas vykdomas lygiagrečiai.

Jokių kodo vykdymo sutrikimų: Kodas vykdomas neatsižvelgiant į esamo puslapio atnaujinimus ir pan.

Judėjimo stebėjimas: Visas judesio aptikimas vyksta fone.

Įgalintas kelių gijų naudojimas: Tai įgalina kelių gijų „JavaScript“.

Patobulintas našumas: Optimizuokite našumą atlikdami intensyvias / sudėtingas užduotis atskirose gijose.

Veiksminga vartotojo patirtis: Taip išvengiama pagrindinės gijos blokavimo, todėl naudotojo patirtis reaguoja į tai.

Interneto darbuotojų apribojimai

Tačiau yra ir tam tikrų interneto darbuotojų apribojimų. Jie nurodomi taip:

  • Didesnis atminties panaudojimas.
  • Negalima atnaujinti DOM darbuotojo gijoje arba iškviesti lango objektą.

Išvada

„Žiniatinklio darbuotojai“ atitinka naršyklės API, leidžiančią „JavaScript“ paleisti užduotis tuo pačiu metu atskiroje / tam skirtoje gijoje. Jie gali būti naudojami kaip argumentą pasirenkant URL, kuris atitinka darbuotojo scenarijaus failo kelią. Šiame tinklaraštyje buvo aptartas „Web Workers“ naudojimas daugiasriegiui „JavaScript“.