Hvad er Asynchronous Control Flow i Node.js?

Hvad Er Asynchronous Control Flow I Node Js



Kontrolflowet er den måde at eksekvere på, hvor din applikations residente proces bliver eksekveret. Dette flow hjælper meget, når du ønsker at udføre en bestemt del af hele programmet først eller efter afslutningen af ​​en tilfældig metode. Udførelsesflowet er normalt indstillet i asynkron eller synkron alt efter arten af ​​den metode, der bliver brugt.

Denne opskrivning forklarer arbejdet og implementeringen af ​​asynkron kontrolflow i Node.js.

Hvad er Asynchronous Control Flow i Node.js?

Asynkront kontrolflow i Node.js refererer til den måde, du administrerer og kontrollerer udførelsesflowet, når du håndterer asynkrone operationer, såsom at lave netværksanmodninger, håndtere hændelser og så videre. Selvom Node.js er specifikt designet til en asynkron karakter, er det bedre at sikre, at den specifikke kode udføres i den tilsigtede rækkefølge og udfører fejlhåndtering effektivt.







Lad os få et kodeeksempel for at forbedre niveauet af forståelighed for asynkron kontrolflow:



var fsObj = kræve ( 'fs' ) ;
//Abstrakt tilbagekaldsfunktion
funktion readFileAsync ( targetFilePath ) {
Vend tilbage ny Løfte ( ( løse, afvise ) => {
fsObj. læs fil ( targetFilePath, 'utf-8' , ( fejl, indhold ) => {
hvis ( fejl ) {
afvise ( fejl ) ;
} andet {
beslutte ( indhold ) ;
}
} ) ;
} ) ;
}

// Funktion til at udføre flere filer i rækkefølge
asynkron funktion readFileSequentially ( ) {
prøve {
konst fil 1 data = afvent readFileAsync ( 'minnyfil1.txt' ) ;
konsol. log ( 'Første fildata:' , fil1Data ) ;

konst fil2data = afvent readFileAsync ( 'usecase.txt' ) ;
konsol. log ( 'Anden fildata:' , fil2data ) ;

konst file3Data = afvent readFileAsync ( 'package.json' ) ;
konsol. log ( 'Tredje fildata:' , file3Data ) ;
} fangst ( fejl ) {
konsol. fejl ( 'Opstået fejl:' , fejl ) ;
}
}

readFileSequentially ( ) ;

Forklaringen af ​​ovenstående kode er som følger:



  • Først skal du importere ' fs '-modulet og gem dets objekt i ' fsObj ' variabel.
  • Definer derefter en ' readFileAsync() ' navngivet funktion med den enkelte parameter ' targetFilePath ” som indeholder stien til en målrettet fil.
  • Denne funktion returnerer en ' løfte ' som indeholder den nødvendige tilbagekaldsfunktion bestående af to parametre nemlig ' beslutte ' og ' afvise ”.
  • Inde i tilbagekaldsfunktionen skal du aktivere ' readFile() ' metode leveret af ' fs ” modul. Send også den angivne parameter for ' targetFilePath ” som den første parameter for metoden “readFile()”.
  • Det ' læs fil '-metoden indeholder også den nødvendige tilbagekaldsfunktion med parametrene ' fejl ' og ' indhold ”. Bestå ' fejl ' ind i ' afvise() ” metode i tilfælde af forekomst af fejl og ” indhold ' ind i ' beslutte() ” metode i tilfælde af ingen fundet fejl.
  • Opret nu en asynkron funktion med navnet ' readFileSequentialy() ' og den indeholder en ' prøv/fang ” blok.
  • Inde i ' prøve ”-blok, opret tre variabler, der gemmer resultatet genereret ved at påkalde den allerede oprettede ” readFileAsync() ' funktion. Hver gang stien til den ønskede fil, der skal udføres, sendes inde i denne funktionsparentes.
  • Nøgleordet ' vente ” er også placeret bag funktionen på tidspunktet for påkaldelse for at stoppe kontrolflowet, indtil handlingen med at læse filen er fuldført.
  • Vis også variablerne på konsollen for at vise det hentede eller læste filindhold.
  • Til sidst påkalder du den indeholdende ' readFileSequentialy() ' funktion.

For at udføre, skal du placere den ovennævnte kode i din ønskede fil med en udvidelse af ' .js ”, der ligger inde i dit Node.js-projekt. Hovedfilen i vores sag er ' controlFlow.js ”, så vores udførelseskommando vil være som følger:





node kontrolFlow. js

Det genererede output viser, at dataene for ønskede filer ved hjælp af asynkron kontrolflow vises i rækkefølge:



Hvad er de mulige årsager og undgåelsestrin for Node.js-blokeret kode?

Den synkrone kode er også kendt som ' Bloker kode ”, da det standser udførelsen af ​​processer indtil udførelsen af ​​den kørende proces. Dette resulterer i dårlig applikationsydelse og reaktionsevne. Blokeringskode opstår typisk på grund af synkrone eller CPU-bundne operationer. De mulige årsager til kodeblokering og hvordan man undgår dem er angivet nedenfor i tabellen:

Årsager til kodeblokering Løsning til kodeblokering
Brug af synkrone filoperationer som fs.readFileSync(). Brug asynkrone filoperationer som fs.readFile.
Brug af CPU-bundne operationer som tunge beregninger eller langvarige loops. Overfør CPU-bundne opgaver til arbejdertråde ved at opdele dem i mindre, ikke-blokerende bidder.
Langsomme eksterne netværksanmodninger på grund af brugen af ​​HTTP-anmodninger til eksterne API'er Brug asynkrone HTTP-biblioteker som Axios eller de indbyggede 'http'- eller 'https'-moduler.
Uoptimerede databaseforespørgsler Optimer databaseforespørgsler ved hjælp af forespørgselsoptimeringsværktøjerne fra databasen.
Brug af uendelige løkker eller stramme løkker uden pauser. Sørg for, at sløjfer har udgangsbetingelser og ikke løber uendeligt.

Konklusion

Det asynkrone kontrolflow bruger nøgleordene ' asynkron/afvent ” for at ændre eller kontrollere udførelsesflowet på en asynkron måde. Tilbagekaldet for den påkrævede asynkrone metode abstraheres og gemmes i en separat funktion. Denne funktion aktiveres derefter ved hjælp af vent nøgleordet på en sekventiel måde sammen med andre metoder efter ønske. Disse funktioner er gemt i en anden tilpasset asynkron funktion, som derefter aktiveres for at starte udførelsen. Denne guide har forklaret det asynkrone kontrolflow i Node.js.