Co je asynchronní řídicí tok v Node.js?

Co Je Asynchronni Ridici Tok V Node Js



Řídicí tok je způsob provádění, při kterém se provádí rezidentní proces vaší aplikace. Tento postup hodně pomáhá, když chcete nejprve provést určitou část celého programu nebo po dokončení náhodné metody. Tok provádění je obvykle nastaven na asynchronní nebo synchronní podle povahy používané metody.

Tento zápis vysvětluje fungování a implementaci asynchronního řídicího toku v Node.js.

Co je asynchronní řídicí tok v Node.js?

Asynchronní řídicí tok v Node.js odkazuje na způsob, jakým řídíte a řídíte tok provádění při práci s asynchronními operacemi, jako je vytváření síťových požadavků, zpracovávání událostí a tak dále. Přestože je Node.js speciálně navržen pro asynchronní povahu, je lepší zajistit, aby se konkrétní kód spouštěl v zamýšleném pořadí a prováděl efektivní zpracování chyb.







Podívejme se na příklad kódu pro zvýšení úrovně srozumitelnosti asynchronního řídicího toku:



byl fsObj = vyžadovat ( 'fs' ) ;
//Abstrakce funkce zpětného volání
funkce readFileAsync ( targetFilePath ) {
vrátit se Nový Slib ( ( vyřešit, odmítnout ) => {
fsObj. readFile ( targetFilePath, 'utf-8' , ( chyba, obsah ) => {
-li ( chyba ) {
odmítnout ( chyba ) ;
} jiný {
odhodlání ( obsah ) ;
}
} ) ;
} ) ;
}

// Funkce pro provádění čtení více souborů za sebou
asynchronní funkce readFileSequentally ( ) {
Snaž se {
konst soubor1Data = čekat readFileAsync ( 'mynewfile1.txt' ) ;
řídicí panel. log ( 'První data souboru:' , soubor1Data ) ;

konst soubor2Data = čekat readFileAsync ( 'usecase.txt' ) ;
řídicí panel. log ( 'Data druhého souboru:' , soubor2Data ) ;

konst soubor3Data = čekat readFileAsync ( 'package.json' ) ;
řídicí panel. log ( 'Data třetího souboru:' , soubor3Data ) ;
} chytit ( chyba ) {
řídicí panel. chyba ( 'Vyskytla se chyba:' , chyba ) ;
}
}

readFileSequentally ( ) ;

Vysvětlení výše uvedeného kódu je následující:



  • Nejprve importujte „ fs “ a uložte jeho objekt do “ fsObj “proměnná.
  • Poté definujte „ readFileAsync() “ pojmenovaná funkce s jediným parametrem “ targetFilePath “, který obsahuje cestu k cílovému souboru.
  • Tato funkce vrací „ slib “, který obsahuje požadovanou funkci zpětného volání sestávající ze dvou parametrů, a to „ odhodlání ' a ' odmítnout “.
  • Uvnitř funkce zpětného volání vyvolejte „ readFile() “ metoda poskytovaná „ fs “modul. Předejte také zadaný parametr „ targetFilePath ” jako první parametr pro metodu “readFile()”.
  • ' readFile “ metoda také obsahuje požadovanou funkci zpětného volání s parametry “ chyba ' a ' obsah “. Předejte „ chyba ' do ' odmítnout() “ metoda v případě výskytu chyb a “ obsah ' do ' odhodlání() ” metoda v případě, že nebyla nalezena chyba.
  • Nyní vytvořte asynchronní funkci s názvem „ readFileSequentialy() “ a obsahuje „ Zkus chytit ”blok.
  • Uvnitř ' Snaž se ” bloku, vytvořte tři proměnné ukládající výsledek vygenerovaný vyvoláním již vytvořeného “ readFileAsync() funkce “. Pokaždé, když je v této závorce funkce předána cesta k požadovanému souboru, který je třeba provést.
  • Klíčové slovo ' čekat ” je také umístěn za funkcí v době vyvolání, aby se zastavil řídicí tok, dokud není dokončena akce čtení souboru.
  • Také zobrazte proměnné na konzole, abyste zobrazili načtený nebo přečtený obsah souboru.
  • Nakonec vyvolejte obsah obsahující „ readFileSequentialy() funkce “.

Pro spuštění umístěte výše uvedený kód do požadovaného souboru s příponou „ .js ” sídlící ve vašem projektu Node.js. Hlavní soubor v našem případě je „ controlFlow.js “, takže náš příkaz k provedení bude následující:





ovládání uzluFlow. js

Vygenerovaný výstup ukazuje, že data pro požadované soubory pomocí asynchronního řídicího toku se zobrazují v pořadí:



Jaké jsou možné příčiny a kroky, jak se vyhnout blokovanému kódu Node.js?

Synchronní kód je také známý jako „ Blokový kód “, protože zastaví provádění procesů až do spuštění běžícího procesu. To má za následek špatný výkon aplikace a odezvu. Blokovací kód se obvykle vyskytuje v důsledku synchronních operací nebo operací vázaných na CPU. Možné příčiny blokování kódu a jak se jim vyhnout jsou uvedeny níže v tabulce:

Příčiny blokování kódu Řešení pro blokování kódu
Použití synchronních operací se soubory, jako je fs.readFileSync(). Použijte asynchronní operace se soubory, jako je fs.readFile.
Použití operací vázaných na CPU, jako jsou náročné výpočty nebo dlouhotrvající smyčky. Úlohy vázané na CPU přeneste na pracovní vlákna tak, že je rozdělíte na menší, neblokující části.
Pomalé externí síťové požadavky kvůli používání HTTP požadavků na vzdálená API Používejte asynchronní HTTP knihovny jako Axios nebo vestavěné moduly „http“ nebo „https“.
Neoptimalizované databázové dotazy Optimalizujte databázové dotazy pomocí nástrojů pro optimalizaci dotazů poskytovaných databází.
Použití nekonečných smyček nebo těsných smyček bez přestávek. Ujistěte se, že smyčky mají podmínky ukončení a neběží donekonečna.

Závěr

Asynchronní řídicí tok využívá klíčová slova „ asynchronní/čekat ” upravovat nebo řídit tok provádění asynchronním způsobem. Zpětné volání pro požadovanou asynchronní metodu je abstrahováno a uloženo v samostatné funkci. Tato funkce je pak vyvolána pomocí klíčového slova wait sekvenčním způsobem spolu s dalšími požadovanými metodami. Tyto funkce jsou uloženy v jiné vlastní asynchronní funkci, která je pak vyvolána ke spuštění provádění. Tato příručka vysvětlila tok asynchronního řízení v Node.js.