Kas ir asinhronā vadības plūsma pakalpojumā Node.js?

Kas Ir Asinhrona Vadibas Plusma Pakalpojuma Node Js



Vadības plūsma ir izpildes veids, kurā tiek izpildīts jūsu lietojumprogrammas pastāvīgais process. Šī plūsma ļoti palīdz, ja vēlaties vispirms izpildīt noteiktu visas programmas daļu vai pēc nejaušas metodes pabeigšanas. Izpildes plūsma parasti tiek iestatīta asinhronā vai sinhronā atkarībā no izmantotās metodes veida.

Šis raksts izskaidro asinhronās vadības plūsmas darbību un ieviešanu pakalpojumā Node.js.

Kas ir asinhronā vadības plūsma pakalpojumā Node.js?

Asinhronā vadības plūsma pakalpojumā Node.js attiecas uz veidu, kā pārvaldāt un kontrolējat izpildes plūsmu, veicot asinhronas darbības, piemēram, veicot tīkla pieprasījumus, apstrādājot notikumus utt. Lai gan Node.js ir īpaši izstrādāts asinhronam darbam, labāk ir nodrošināt, lai konkrētais kods tiktu izpildīts paredzētajā secībā un efektīvi apstrādātu kļūdas.







Piedāvāsim koda piemēru, lai uzlabotu asinhronās vadības plūsmas saprotamības līmeni:



bija fsObj = pieprasīt ( 'fs' ) ;
//Abstrahēta atzvanīšanas funkcija
funkcija readFileAsync ( targetFilePath ) {
atgriezties jauns Apsolīt ( ( atrisināt, noraidīt ) => {
fsObj. lasīt failu ( targetFilePath, 'utf-8' , ( kļūda, saturs ) => {
ja ( kļūda ) {
noraidīt ( kļūda ) ;
} cits {
atrisināt ( saturu ) ;
}
} ) ;
} ) ;
}

// Funkcija vairāku failu secīgai nolasīšanai
async funkcija readFileSequential ( ) {
mēģināt {
konst fails1 dati = gaidiet readFileAsync ( 'mans jaunais fails1.txt' ) ;
konsole. žurnāls ( 'Pirmie faila dati:' , fails1Dati ) ;

konst file2Data = gaidiet readFileAsync ( 'usecase.txt' ) ;
konsole. žurnāls ( 'Otrā faila dati:' , file2Data ) ;

konst fails3 dati = gaidiet readFileAsync ( 'package.json' ) ;
konsole. žurnāls ( 'Trešā faila dati:' , file3Data ) ;
} noķert ( kļūda ) {
konsole. kļūda ( 'Radās kļūda:' , kļūda ) ;
}
}

lasīt failu secīgi ( ) ;

Iepriekš minētā koda skaidrojums ir šāds:



  • Vispirms importējiet ' fs ” moduli un saglabā tā objektu mapē fsObj ” mainīgais.
  • Pēc tam definējiet ' readFileAsync() ' nosaukta funkcija ar vienu parametru ' targetFilePath ”, kurā ir norādīts mērķfaila ceļš.
  • Šī funkcija atgriež ' solījums ', kas satur nepieciešamo atzvanīšanas funkciju, kas sastāv no diviem parametriem, proti, ' atrisināt ' un ' noraidīt ”.
  • Atzvanīšanas funkcijā izsauciet ' lasīt failu () ” metode, ko nodrošina “ fs ” modulis. Nododiet arī norādīto parametru “ targetFilePath ” kā pirmo parametru metodei “readFile()”.
  • ' lasīt failu ” metode satur arī nepieciešamo atzvanīšanas funkciju, kuras parametri ir “ kļūda ' un ' saturu ”. Iet garām ' kļūda ' iekšā ' noraidīt () ” metodi kļūdu rašanās gadījumā un „ saturu ' iekšā ' atrisināt () ” metodi, ja kļūda nav atrasta.
  • Tagad izveidojiet asinhronu funkciju ar nosaukumu ' readFileSequentialy() ” un tajā ir „ mēģināt/noķert ' bloķēt.
  • Iekšpusē ' mēģināt ” bloku, izveidojiet trīs mainīgos, saglabājot rezultātu, kas ģenerēts, izsaucot jau izveidoto readFileAsync() ” funkcija. Katru reizi, kad vēlamā faila ceļš, kas jāizpilda, tiek nodots šīs funkcijas iekavās.
  • Atslēgvārds ' gaidīt ” ir arī novietots aiz funkcijas izsaukšanas laikā, lai apturētu vadības plūsmu, līdz faila nolasīšanas darbība ir pabeigta.
  • Parādiet arī mainīgos lielumus konsolē, lai parādītu izgūtā vai lasītā faila saturu.
  • Visbeidzot izsauciet saturošo ' readFileSequentialy() ” funkcija.

Lai izpildītu, ievietojiet iepriekš norādīto kodu vajadzīgajā failā ar paplašinājumu ' .js ”, kas atrodas jūsu Node.js projektā. Galvenais fails mūsu gadījumā ir ' controlFlow.js ”, tāpēc mūsu izpildes komanda būs šāda:





mezgla kontrolePlūsma. js

Ģenerētā izvade parāda, ka dati par vajadzīgajiem failiem, izmantojot asinhrono vadības plūsmu, tiek parādīti secībā:



Kādi ir Node.js bloķētā koda iespējamie cēloņi un darbības, kā novērst?

Sinhronais kods ir pazīstams arī kā ' Bloķēt kodu ”, jo tas aptur procesu izpildi līdz darbības procesa izpildei. Tas rada sliktu lietojumprogrammas veiktspēju un atsaucību. Bloķēšanas kods parasti rodas sinhronu vai ar CPU saistītu darbību dēļ. Iespējamie koda bloķēšanas cēloņi un veidi, kā no tiem izvairīties, ir norādīti zemāk esošajā tabulā:

Koda bloķēšanas iemesli Risinājums koda bloķēšanai
Sinhronu failu operāciju, piemēram, fs.readFileSync() izmantošana. Izmantojiet asinhronās failu darbības, piemēram, fs.readFile.
Ar CPU saistītu darbību, piemēram, smagu aprēķinu vai ilgstošas ​​cilpas, izmantošana. Izlādējiet ar CPU saistītos uzdevumus darbinieku pavedienos, sadalot tos mazākos, nebloķējošos gabalos.
Lēni ārējā tīkla pieprasījumi, jo tiek izmantoti HTTP pieprasījumi attāliem API Izmantojiet asinhronās HTTP bibliotēkas, piemēram, Axios vai iebūvētos “http” vai “https” moduļus.
Neoptimizēti datu bāzes vaicājumi Optimizējiet datu bāzes vaicājumus, izmantojot datu bāzes nodrošinātos vaicājumu optimizācijas rīkus.
Bezgalīgu cilpu vai stingru cilpu izmantošana bez pārtraukumiem. Nodrošiniet, lai cilpām būtu izejas nosacījumi un tās nedarbotos bezgalīgi.

Secinājums

Asinhronajā vadības plūsmā tiek izmantoti atslēgvārdi ' async/wait ”, lai asinhronā veidā modificētu vai kontrolētu izpildes plūsmu. Nepieciešamās asinhronās metodes atzvanīšana tiek abstrahēta un saglabāta atsevišķā funkcijā. Pēc tam šī funkcija tiek izsaukta ar gaidīšanas atslēgvārda palīdzību secīgā veidā kopā ar citām metodēm pēc vēlēšanās. Šīs funkcijas tiek saglabātas citā pielāgotā asinhronā funkcijā, kas pēc tam tiek izsaukta, lai sāktu izpildi. Šajā rokasgrāmatā ir izskaidrota asinhronā vadības plūsma pakalpojumā Node.js.