Što je asinkroni kontrolni tok u Node.js?

Sto Je Asinkroni Kontrolni Tok U Node Js



Kontrolni tijek je način izvršenja na koji se izvršava stalni proces vaše aplikacije. Ovaj tijek puno pomaže kada želite prvo izvršiti određeni dio cijelog programa ili nakon završetka slučajne metode. Tijek izvršenja obično se postavlja na asinkroni ili sinkroni prema prirodi metode koja se koristi.

Ovaj zapis objašnjava rad i implementaciju asinkronog toka kontrole u Node.js.

Što je asinkroni kontrolni tok u Node.js?

Asinkroni tijek kontrole u Node.js odnosi se na način na koji upravljate i kontrolirate tijek izvršenja kada se bavite asinkronim operacijama, kao što je postavljanje mrežnih zahtjeva, rukovanje događajima i tako dalje. Iako je Node.js posebno dizajniran za asinkronu prirodu, bolje je osigurati da se određeni kod izvršava u predviđenom slijedu i učinkovito rješava pogreške.







Uzmimo primjer koda za povećanje razine razumljivosti asinkronog toka upravljanja:



bio je fsObj = zahtijevati ( 'fs' ) ;
//Apstraktna funkcija povratnog poziva
funkcija readFileAsync ( targetFilePath ) {
povratak novi Obećanje ( ( riješiti, odbaciti ) => {
fsObj. readFile ( targetFilePath, 'utf-8' , ( greška, sadržaj ) => {
ako ( greška ) {
odbiti ( greška ) ;
} drugo {
odlučnost ( sadržaj ) ;
}
} ) ;
} ) ;
}

// Funkcija za izvođenje višestrukih uzastopnih čitanja datoteka
asinkrona funkcija readFileSequentially ( ) {
probati {
konst file1Data = čekaj readFileAsync ( 'moja novadatoteka1.txt' ) ;
konzola. log ( 'Podaci prve datoteke:' , datoteka1Podaci ) ;

konst file2Data = čekaj readFileAsync ( 'usecase.txt' ) ;
konzola. log ( 'Podaci druge datoteke:' , datoteka2Podaci ) ;

konst file3Data = čekaj readFileAsync ( 'package.json' ) ;
konzola. log ( 'Podaci treće datoteke:' , datoteka3Podaci ) ;
} ulov ( greška ) {
konzola. greška ( 'Dogodila se pogreška:' , pogreška ) ;
}
}

readFileSequentially ( ) ;

Objašnjenje gornjeg koda je sljedeće:



  • Prvo uvezite ' fs ” i pohranite njegov objekt u „ fsObj ” varijabla.
  • Zatim definirajte ' readFileAsync() ” imenovana funkcija koja ima jedan parametar od „ targetFilePath ” koji sadrži stazu za ciljanu datoteku.
  • Ova funkcija vraća ' obećanje ” koja sadrži traženu funkciju povratnog poziva koja se sastoji od dva parametra, naime “ odlučnost ' i ' odbiti ”.
  • Unutar funkcije povratnog poziva pozovite ' readFile() ' metoda koju pruža ' fs ” modul. Također, proslijedite navedeni parametar ' targetFilePath ” kao prvi parametar za metodu “readFile()”.
  • ' readFile ' metoda također sadrži potrebnu funkciju povratnog poziva koja ima parametre ' greška ' i ' sadržaj ”. Prođi ' greška ' u ' odbiti() ” metoda u slučaju pojave grešaka i “ sadržaj ' u ' odlučnost() ” metoda u slučaju da greška nije pronađena.
  • Sada stvorite asinkronu funkciju pod nazivom ' ReadFileSequentialy() ' i sadrži ' pokušaj uhvatiti ' blok.
  • Unutar ' probati ', kreirajte tri varijable koje pohranjuju rezultat generiran pozivanjem već stvorenog ' readFileAsync() ” funkcija. Svaki put kada se staza za željenu datoteku koju treba izvršiti prosljeđuje unutar ove zagrade funkcije.
  • Ključna riječ ' čekati ” također se nalazi iza funkcije u trenutku pozivanja da se zaustavi kontrolni tok dok se radnja čitanja datoteke ne završi.
  • Također, prikažite varijable na konzoli za prikaz dohvaćenog ili pročitanog sadržaja datoteke.
  • Na kraju, pozovite sadržaj koji sadrži ' ReadFileSequentialy() ” funkcija.

Kako biste izvršili, postavite gore navedeni kod u željenu datoteku s ekstenzijom ' .js ” koja se nalazi unutar vašeg Node.js projekta. Glavna datoteka u našem slučaju je ' controlFlow.js ”, pa će naša naredba za izvršenje biti sljedeća:





kontrola protoka čvora. js

Generirani izlaz pokazuje da se podaci za željene datoteke pomoću asinkronog kontrolnog toka prikazuju u nizu:



Koji su mogući uzroci i koraci za izbjegavanje blokiranog koda Node.js?

Sinkroni kod je također poznat kao ' Blokiraj kod ” jer zaustavlja izvršavanje procesa do izvršenja procesa koji se izvodi. To rezultira lošim performansama i odzivom aplikacije. Kôd za blokiranje obično se događa zbog sinkronih operacija ili operacija povezanih s procesorom. Mogući uzroci blokiranja koda i kako ih izbjeći navedeni su dolje u tablici:

Uzroci blokiranja koda Rješenje za blokiranje koda
Upotreba sinkronih operacija datoteka poput fs.readFileSync(). Koristite asinkrone operacije datoteka poput fs.readFile.
Korištenje CPU vezanih operacija kao što su teška izračunavanja ili dugotrajne petlje. Zadatke vezane za CPU preopteretiti radničkim nitima njihovim razbijanjem na manje dijelove koji ne blokiraju.
Spori vanjski mrežni zahtjevi zbog upotrebe HTTP zahtjeva udaljenim API-jima Koristite asinkrone HTTP biblioteke kao što je Axios ili ugrađene 'http' ili 'https' module.
Neoptimizirani upiti baze podataka Optimizirajte upite baze podataka pomoću alata za optimizaciju upita koje pruža baza podataka.
Korištenje beskonačnih petlji ili uskih petlji bez prekida. Osigurajte da petlje imaju izlazne uvjete i da ne rade beskonačno.

Zaključak

Asinkroni kontrolni tijek koristi ključne riječi ' asinkroni/čekaj ” za modificiranje ili kontrolu tijeka izvršenja na asinkroni način. Povratni poziv za traženu asinkronu metodu je apstrahiran i pohranjen u zasebnoj funkciji. Ova funkcija se zatim poziva uz pomoć ključne riječi čekanja na sekvencijalni način zajedno s drugim metodama po želji. Te su funkcije pohranjene u drugoj prilagođenoj asinkronoj funkciji koja se zatim poziva za početak izvršenja. Ovaj vodič objašnjava asinkroni tok kontrole u Node.js.