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.