Kaj je asinhroni kontrolni tok v Node.js?

Kaj Je Asinhroni Kontrolni Tok V Node Js



Kontrolni tok je način izvajanja, na katerega se izvaja stalni proces vaše aplikacije. Ta tok zelo pomaga, ko želite najprej izvesti določen del celotnega programa ali po zaključku naključne metode. Tok izvajanja je običajno nastavljen na asinhrono ali sinhrono glede na naravo metode, ki se uporablja.

Ta zapis pojasnjuje delovanje in izvajanje asinhronega nadzornega toka v Node.js.

Kaj je asinhroni kontrolni tok v Node.js?

Asinhroni tok nadzora v Node.js se nanaša na način upravljanja in nadzora toka izvajanja, ko se ukvarjate z asinhronimi operacijami, kot je dajanje omrežnih zahtev, obravnavanje dogodkov itd. Čeprav je Node.js posebej zasnovan za asinhrono naravo, je bolje zagotoviti, da se določena koda izvaja v predvidenem zaporedju in učinkovito obravnava napake.







Oglejmo si primer kode za izboljšanje ravni razumljivosti asinhronega nadzornega toka:



je bil fsObj = zahtevati ( 'fs' ) ;
//Abstrahirana funkcija povratnega klica
funkcija readFileAsync ( targetFilePath ) {
vrnitev novo Obljuba ( ( razrešiti, zavrniti ) => {
fsObj. readFile ( targetFilePath, 'utf-8' , ( napaka, vsebina ) => {
če ( napaka ) {
zavrniti ( napaka ) ;
} drugače {
rešiti ( vsebino ) ;
}
} ) ;
} ) ;
}

// Funkcija za zaporedno branje več datotek
async funkcija readFileSequentially ( ) {
poskusi {
konst file1Data = počakajte readFileAsync ( 'mynewfile1.txt' ) ;
konzola. dnevnik ( 'Podatki prve datoteke:' , datoteka1Podatki ) ;

konst file2Data = počakajte readFileAsync ( 'usecase.txt' ) ;
konzola. dnevnik ( 'Podatki druge datoteke:' , datoteka2Podatki ) ;

konst file3Data = počakajte readFileAsync ( 'package.json' ) ;
konzola. dnevnik ( 'Podatki tretje datoteke:' , datoteka3Podatki ) ;
} ulov ( napaka ) {
konzola. napaka ( 'Prišlo je do napake:' , napaka ) ;
}
}

readFileSequentially ( ) ;

Razlaga zgornje kode je naslednja:



  • Najprej uvozite » fs ' in shranite njegov objekt v ' fsObj ” spremenljivka.
  • Nato definirajte ' readFileAsync() ' imenovana funkcija z enim parametrom ' targetFilePath «, ki vsebuje pot do ciljne datoteke.
  • Ta funkcija vrne ' obljuba «, ki vsebuje zahtevano funkcijo povratnega klica, sestavljeno iz dveh parametrov, in sicer » rešiti « in » zavrniti ”.
  • Znotraj funkcije povratnega klica pokličite » readFile() ' metoda, ki jo zagotavlja ' fs ” modul. Posredujte tudi navedeni parameter ' targetFilePath « kot prvi parameter za metodo »readFile()«.
  • ' readFile ' vsebuje tudi zahtevano funkcijo povratnega klica s parametri ' napaka « in » vsebino ”. Predaj ' napaka ' v ' zavrni () ” način v primeru pojava napak in “ vsebino ' v ' razreši() ” v primeru, da napaka ni najdena.
  • Zdaj ustvarite asinhrono funkcijo z imenom ' readFileSequentialy() « in vsebuje » poskusiti/ujeti ” blok.
  • Znotraj ' poskusi ', ustvarite tri spremenljivke, ki shranijo rezultat, ustvarjen s priklicem že ustvarjenega ' readFileAsync() ”. Vsakič, ko se pot do želene datoteke, ki jo je treba izvesti, posreduje znotraj tega oklepaja funkcije.
  • Ključna beseda ' čakati ” je prav tako nameščen za funkcijo v času priklica, da ustavi tok nadzora, dokler ni dokončano dejanje branja datoteke.
  • Prav tako prikažite spremenljivke na konzoli, da prikažete pridobljeno ali prebrano vsebino datoteke.
  • Končno pokličite vsebovano ' readFileSequentialy() ”.

Za izvedbo postavite zgoraj navedeno kodo v želeno datoteko s pripono ' .js ”, ki se nahaja znotraj vašega projekta Node.js. Glavna datoteka v našem primeru je ' controlFlow.js «, zato bo naš izvršilni ukaz naslednji:





vozlišče controlFlow. js

Ustvarjeni izhod kaže, da so podatki za želene datoteke z uporabo asinhronega nadzornega toka prikazani v zaporedju:



Kateri so možni vzroki in koraki za izogibanje blokirani kodi Node.js?

Sinhronska koda je znana tudi kot ' Blokiraj kodo ”, saj ustavi izvajanje procesov do izvedbe tekočega procesa. Posledica tega je slabo delovanje in odzivnost aplikacije. Koda za blokiranje se običajno pojavi zaradi sinhronih operacij ali operacij, vezanih na CPE. Možni vzroki za blokiranje kode in kako se jim izogniti so navedeni spodaj v tabeli:

Vzroki za blokiranje kode Rešitev za blokiranje kode
Uporaba sinhronih datotečnih operacij, kot je fs.readFileSync(). Uporabite asinhrone datotečne operacije, kot je fs.readFile.
Uporaba operacij, vezanih na CPE, kot so težki izračuni ali dolgotrajne zanke. Opravila, vezana na CPE, preložite na delovne niti tako, da jih razdelite na manjše dele, ki ne blokirajo.
Počasne zahteve zunanjega omrežja zaradi uporabe zahtev HTTP za oddaljene API-je Uporabite asinhrone knjižnice HTTP, kot je Axios, ali vgrajene module »http« ali »https«.
Neoptimizirane poizvedbe po bazi podatkov Optimizirajte poizvedbe baze podatkov z orodji za optimizacijo poizvedb, ki jih ponuja baza podatkov.
Uporaba neskončnih zank ali tesnih zank brez prekinitev. Zagotovite, da imajo zanke izhodne pogoje in da se ne izvajajo neskončno.

Zaključek

Asinhroni nadzorni tok uporablja ključne besede ' async/počakaj ” za spreminjanje ali nadzor toka izvajanja na asinhron način. Povratni klic za zahtevano asinhrono metodo je abstrahiran in shranjen v ločeni funkciji. Ta funkcija se nato prikliče s pomočjo ključne besede await na zaporedni način skupaj z drugimi metodami po želji. Te funkcije so shranjene v drugi asinhroni funkciji po meri, ki se nato prikliče za začetek izvajanja. V tem priročniku je razložen asinhroni nadzorni tok v Node.js.