Mikä on Asynchronous Control Flow Node.js:ssä?

Mika On Asynchronous Control Flow Node Js Ssa



Ohjauskulku on suoritustapa, jolla sovelluksesi pysyvä prosessi suoritetaan. Tämä kulku auttaa paljon, kun haluat suorittaa tietyn osan koko ohjelmasta ensin tai satunnaisen menetelmän suorittamisen jälkeen. Suoritusvuo asetetaan yleensä asynkroniseksi tai synkroniseksi käytettävän menetelmän luonteen mukaan.

Tämä kirjoitus selittää asynkronisen ohjausvirran toiminnan ja toteutuksen Node.js:ssä.

Mikä on Asynchronous Control Flow Node.js:ssä?

Asynkroninen ohjausvirta Node.js:ssa viittaa tapaan, jolla hallitset ja ohjaat suorituskulkua, kun käsittelet asynkronisia toimintoja, kuten verkkopyyntöjen tekemistä, tapahtumien käsittelyä ja niin edelleen. Vaikka Node.js on erityisesti suunniteltu asynkroniseen luonteeseen, on parempi varmistaa, että tietty koodi suoritetaan aiotussa järjestyksessä ja suorittaa virheiden käsittelyn tehokkaasti.







Otetaanpa koodiesimerkki asynkronisen ohjausvirran ymmärrettävyyden parantamiseksi:



oli fsObj = vaatia ( 'fs' ) ;
//Abstrahoitu takaisinsoittotoiminto
toiminto readFileAsync ( targetFilePath ) {
palata Uusi Lupaus ( ( ratkaista, hylätä ) => {
fsObj. lue tiedosto ( targetFilePath, 'utf-8' , ( virhe, sisältö ) => {
jos ( virhe ) {
hylätä ( virhe ) ;
} muu {
ratkaista ( sisältö ) ;
}
} ) ;
} ) ;
}

// Toiminto useiden tiedostojen lukemiseen peräkkäin
async-funktio readFileSequentially ( ) {
yrittää {
konst tiedosto1 Data = odota readFileAsyncia ( 'uusitiedosto1.txt' ) ;
konsoli. Hirsi ( 'Ensimmäisen tiedoston tiedot:' , file1Data ) ;

konst tiedosto2Data = odota readFileAsyncia ( 'usecase.txt' ) ;
konsoli. Hirsi ( 'Toisen tiedoston tiedot:' , file2Data ) ;

konst tiedosto3Data = odota readFileAsyncia ( 'package.json' ) ;
konsoli. Hirsi ( 'Kolmannen tiedoston tiedot:' , file3Data ) ;
} ottaa kiinni ( virhe ) {
konsoli. virhe ( 'Tapahtui virhe:' , virhe ) ;
}
}

readFileSequentially ( ) ;

Yllä olevan koodin selitys on seuraava:



  • Tuo ensin ' fs ' -moduuli ja tallenna sen objekti ' fsObj ”muuttuja.
  • Määritä sitten ' readFileAsync() ' nimetty funktio, jolla on yksi parametri ' targetFilePath ', joka sisältää kohdistetun tiedoston polun.
  • Tämä funktio palauttaa ' lupaus ', joka sisältää vaaditun takaisinsoittotoiminnon, joka koostuu kahdesta parametrista, nimittäin ' ratkaista ' ja ' hylätä ”.
  • Kutsu takaisinsoittotoiminnon sisällä ' luetiedosto() ' menetelmä, jonka tarjoaa ' fs ” moduuli. Anna myös annettu parametri ' targetFilePath 'readFile()'-menetelmän ensimmäisenä parametrina.
  • ' lue tiedosto ' -menetelmä sisältää myös vaaditun takaisinsoittofunktion, jonka parametrit ovat ' virhe ' ja ' sisältö ”. Anna minulle ' virhe ' osaksi ' hylätä() ' menetelmä virheiden ilmetessä ja ' sisältö ' osaksi ' ratkaista() ” -menetelmää, jos virhettä ei löydy.
  • Luo nyt asynkroninen funktio nimeltä ' readFileSequentialy() ' ja se sisältää ' yritä saada kiinni ” lohko.
  • Sisällä ' yrittää ' lohko, luo kolme muuttujaa, jotka tallentavat tuloksen, joka on luotu kutsumalla jo luotu ' readFileAsync() ”-toiminto. Joka kerta, kun halutun tiedoston polku, joka on suoritettava, välitetään tämän funktion suluissa.
  • Avainsana ' odottaa ” on myös sijoitettu toiminnon taakse kutsun aikana pysäyttämään ohjausvirran, kunnes tiedoston lukeminen on suoritettu loppuun.
  • Näytä myös muuttujat konsolissa näyttääksesi haetun tai luetun tiedoston sisällön.
  • Kutsu lopuksi sana, joka sisältää ' readFileSequentialy() ”-toiminto.

Suorittaaksesi sijoita yllä mainittu koodi haluamaasi tiedostoon, jonka tunniste on ' .js Node.js-projektisi sisällä. Päätiedosto meidän tapauksessamme on ' controlFlow.js ', joten suorituskomentomme on seuraava:





solmun ohjausFlow. js

Luotu tulos näyttää, että haluttujen tiedostojen tiedot asynkronista ohjausvirtaa käyttäen näytetään järjestyksessä:



Mitkä ovat mahdolliset syyt ja välttämistoimenpiteet Node.js:n estettyyn koodiin?

Synkroninen koodi tunnetaan myös nimellä ' Estä koodi ', koska se pysäyttää prosessien suorittamisen käynnissä olevan prosessin suorittamiseen asti. Tämä johtaa huonoon sovelluksen suorituskykyyn ja reagointikykyyn. Estokoodi johtuu tyypillisesti synkronisista tai suorittimeen sidotuista toiminnoista. Mahdolliset koodin eston syyt ja niiden välttäminen on lueteltu alla olevassa taulukossa:

Syitä koodin estoon Ratkaisu koodin estoon
Synkronisten tiedostotoimintojen käyttö, kuten fs.readFileSync(). Käytä asynkronisia tiedostotoimintoja, kuten fs.readFile.
Suorittimeen sidottujen toimintojen, kuten raskaiden laskelmien tai pitkien silmukoiden, käyttö. Pura suorittimeen sidottuja tehtäviä työntekijöiden säikeisiin jakamalla ne pienempiin, estämättömiin osiin.
Hitaat ulkoisen verkon pyynnöt johtuen etäsovellusliittymien HTTP-pyyntöjen käytöstä Käytä asynkronisia HTTP-kirjastoja, kuten Axios, tai sisäänrakennettuja 'http'- tai 'https'-moduuleja.
Optimoimattomat tietokantakyselyt Optimoi tietokantakyselyt käyttämällä tietokannan tarjoamia kyselyn optimointityökaluja.
Äärettyjen silmukoiden tai tiukkojen silmukoiden käyttö ilman taukoja. Varmista, että silmukoilla on poistumisehdot eivätkä ne suorita loputtomasti.

Johtopäätös

Asynkroninen ohjausvirta käyttää avainsanoja ' async/wait ” muokata tai ohjata suorituskulkua asynkronisella tavalla. Vaaditun asynkronisen menetelmän takaisinsoitto abstraktoidaan ja tallennetaan erilliseen funktioon. Tämä toiminto vedetään sitten await-avainsanan avulla peräkkäin muiden menetelmien kanssa haluttaessa. Nämä funktiot tallennetaan toiseen mukautettuun asynkroniseen funktioon, jota sitten kutsutaan käynnistämään suoritus. Tässä oppaassa on selitetty Node.js:n asynkroninen ohjauskulku.