Mi az aszinkron vezérlési folyamat a Node.js-ben?

Mi Az Aszinkron Vezerlesi Folyamat A Node Js Ben



A vezérlési folyamat az a végrehajtási mód, amelyben az alkalmazásban lévő folyamat végrehajtásra kerül. Ez a folyamat sokat segít, ha először vagy egy véletlenszerű metódus befejezése után a teljes program egy meghatározott részét akarjuk végrehajtani. A végrehajtási folyamat általában aszinkronban vagy szinkronban van beállítva a használt módszer természetétől függően.

Ez az írás elmagyarázza az aszinkron vezérlési folyamat működését és megvalósítását a Node.js-ben.

Mi az aszinkron vezérlési folyamat a Node.js-ben?

Az aszinkron vezérlési folyamat a Node.js-ben a végrehajtási folyamat kezelésének és vezérlésének módját jelenti az aszinkron műveletek kezelésekor, mint például a hálózati kérések, események kezelése stb. Bár a Node.js kifejezetten aszinkron jellegű, jobb, ha gondoskodik arról, hogy az adott kód a kívánt sorrendben fusson le, és hatékonyan hajtsa végre a hibakezelést.







Vegyünk egy kódpéldát az aszinkron vezérlési folyamat érthetőségének javítására:



fsObj volt = igényelnek ( 'fs' ) ;
//Absztrahált visszahívási függvény
függvény readFileAsync ( targetFilePath ) {
Visszatérés új Ígéret ( ( megoldani, elutasítani ) => {
fsObj. readFile ( targetFilePath, 'utf-8' , ( hiba, tartalom ) => {
ha ( hiba ) {
elutasít ( hiba ) ;
} más {
elhatározás ( tartalom ) ;
}
} ) ;
} ) ;
}

// Több fájl egymás utáni beolvasását végrehajtó funkció
async függvény readFileSequentially ( ) {
próbáld ki {
const file1Data = várja a readFileAsync-et ( 'újfájl1.txt' ) ;
konzol. log ( 'Első fájladatok:' , file1Data ) ;

const file2Data = várja a readFileAsync-et ( 'usecase.txt' ) ;
konzol. log ( 'Második fájl adata:' , file2Data ) ;

const file3Data = várja a readFileAsync-et ( 'package.json' ) ;
konzol. log ( 'Harmadik fájl adatai:' , file3Data ) ;
} fogás ( hiba ) {
konzol. hiba ( 'Occurred Error:' , hiba ) ;
}
}

readFileSequential ( ) ;

A fenti kód magyarázata a következő:



  • Először importálja a „ fs ' modult, és tárolja az objektumát a ' fsObj ” változó.
  • Ezután definiáljon egy „ readFileAsync() ' nevű függvény, amelynek egyetlen paramétere ' targetFilePath ', amely a célfájl elérési útját tartalmazza.
  • Ez a függvény egy ' ígéret ', amely tartalmazza a szükséges visszahívási függvényt, amely két paraméterből áll, nevezetesen ' elhatározás ” és „ elutasít ”.
  • A visszahívási függvényen belül hívja meg a ' readFile() ' módszer által biztosított ' fs ” modult. Adja meg a megadott paramétert is: ' targetFilePath ” a „readFile()” metódus első paramétereként.
  • A ' readFile ” metódus tartalmazza a szükséges visszahívási függvényt is, amelynek paraméterei a „ hiba ” és „ tartalom ”. Haladjon el a „ hiba ' ba,-be ' elutasít() ” módszer hiba előfordulása esetén és „ tartalom ' ba,-be ' elhatározás() ” módszert nem talált hiba esetén.
  • Most hozzon létre egy aszinkron függvényt ' readFileSequentialy() ' és tartalmaz egy ' kipróbálni/elkapni ' Blokk.
  • Benne ' próbáld ki ” blokkban, hozzon létre három változót, amelyek tárolják a már létrehozott „ readFileAsync() ” funkciót. Minden alkalommal, amikor a kívánt fájl elérési útja, amelyet végre kell hajtani, a függvény zárójelébe kerül.
  • A kulcsszó ' várja ” is a függvény mögé kerül a meghívásakor, hogy leállítsa a vezérlési folyamatot, amíg a fájl beolvasása be nem fejeződik.
  • Ezenkívül jelenítse meg a változókat a konzolon a letöltött vagy olvasott fájltartalom megjelenítéséhez.
  • Végül hívja meg a ' readFileSequentialy() ” funkciót.

A végrehajtáshoz helyezze el a fent megadott kódot a kívánt fájlba, amelynek kiterjesztése ' .js ” amely a Node.js projektben található. A fő fájl esetünkben a „ controlFlow.js ”, tehát a végrehajtási parancsunk a következő lesz:





node controlFlow. js

A generált kimenet azt mutatja, hogy az aszinkron vezérlési folyamatot használó kívánt fájlok adatai sorrendben jelennek meg:



Melyek a Node.js blokkolt kód lehetséges okai és elkerülési lépései?

A szinkron kód más néven ' Blokkkód ”, mivel leállítja a folyamatok végrehajtását a futó folyamat végrehajtásáig. Ez gyenge alkalmazásteljesítményt és reakcióképességet eredményez. A blokkoló kód általában szinkron vagy CPU-hoz kötött műveletek miatt fordul elő. A kód blokkolásának lehetséges okait és azok elkerülésének módjait az alábbi táblázat tartalmazza:

A kód blokkolásának okai Megoldás a kódblokkoláshoz
Szinkron fájlműveletek használata, például az fs.readFileSync(). Használjon aszinkron fájlműveleteket, például az fs.readFile-t.
CPU-hoz kötött műveletek, például nehéz számítások vagy hosszan futó hurkok használata. A CPU-hoz kötött feladatokat kisebb, nem blokkoló darabokra bontva töltheti át a dolgozói szálakra.
Lassú külső hálózati kérések a távoli API-khoz intézett HTTP-kérések használata miatt Használjon aszinkron HTTP-könyvtárakat, mint például az Axios, vagy a beépített „http” vagy „https” modulokat.
Nem optimalizált adatbázis-lekérdezések Optimalizálja az adatbázis-lekérdezéseket az adatbázis által biztosított lekérdezésoptimalizáló eszközökkel.
Végtelen hurkok vagy szűk hurkok használata szünetek nélkül. Győződjön meg arról, hogy a hurkok rendelkeznek kilépési feltételekkel, és nem futnak végtelenségig.

Következtetés

Az aszinkron vezérlési folyamat a '' kulcsszavakat használja async/wait ” a végrehajtás folyamatának aszinkron módon történő módosításához vagy vezérléséhez. A szükséges aszinkron metódus visszahívása absztrahálva és külön függvényben tárolódik. Ezt a funkciót ezután az await kulcsszó segítségével, szekvenciálisan hívjuk meg, más metódusokkal együtt, ahogy kívánjuk. Ezeket a függvényeket egy másik egyéni aszinkron függvény tárolja, amelyet ezután meghív a végrehajtás elindításához. Ez az útmutató ismerteti a Node.js aszinkron vezérlési folyamatát.