Què és el flux de control asíncron a Node.js?

Que Es El Flux De Control Asincron A Node Js



El flux de control és la forma d'execució en què s'executa el procés de residència de la vostra aplicació. Aquest flux ajuda molt quan voleu executar una part específica de tot el programa primer o després de completar un mètode aleatori. El flux d'execució s'estableix normalment en asíncron o síncron segons la naturalesa del mètode que s'està utilitzant.

Aquest escrit explica el funcionament i la implementació del flux de control asíncron a Node.js.

Què és el flux de control asíncron a Node.js?

El flux de control asíncron a Node.js es refereix a la manera com gestioneu i controleu el flux d'execució quan tracteu operacions asíncrones, com ara fer sol·licituds de xarxa, gestionar esdeveniments, etc. Tot i que Node.js està dissenyat específicament per a una naturalesa asíncrona, és millor assegurar-se que el codi específic s'executa en la seqüència prevista i gestiona els errors de manera eficaç.







Tinguem un exemple de codi per millorar el nivell de comprensió del flux de control asíncron:



era fsObj = requereixen ( 'fs' ) ;
//Funció de devolució de trucada abstracta
funció readFileAsync ( targetFilePath ) {
tornar nou Promesa ( ( resoldre, rebutjar ) => {
fsObj. readFile ( targetFilePath, 'utf-8' , ( error, contingut ) => {
si ( error ) {
rebutjar ( error ) ;
} altra cosa {
resoldre ( contingut ) ;
}
} ) ;
} ) ;
}

// Funció per realitzar múltiples lectures de fitxers en seqüència
funció asíncrona readFileSequentially ( ) {
provar {
const fitxer 1 Dades = espereu readFileAsync ( 'el meunoufitxer1.txt' ) ;
consola. registre ( 'Dades del primer fitxer:' , fitxer1Data ) ;

const fitxer2Data = espereu readFileAsync ( 'usecase.txt' ) ;
consola. registre ( 'Dades del segon fitxer:' , fitxer2Data ) ;

const fitxer3Data = espereu readFileAsync ( 'package.json' ) ;
consola. registre ( 'Dades del tercer fitxer:' , fitxer3Data ) ;
} agafar ( error ) {
consola. error ( 'Error ocorregut:' , error ) ;
}
}

readFileSequentially ( ) ;

L'explicació del codi anterior és la següent:



  • Primer, importeu el ' fs ” i emmagatzemar el seu objecte al “ fsObj ” variable.
  • A continuació, definiu un ' readFileAsync() ” funció anomenada que té el paràmetre únic de “ targetFilePath ” que conté la ruta d'un fitxer de destinació.
  • Aquesta funció retorna un ' promesa ' que conté la funció de devolució de trucada necessària que consta de dos paràmetres, a saber ' resoldre ' i ' rebutjar ”.
  • Dins de la funció de devolució de trucada, invoqueu el ' readFile() ” mètode proporcionat pel “ fs ” mòdul. A més, passeu el paràmetre proporcionat de ' targetFilePath ” com a primer paràmetre per al mètode “readFile()”.
  • El ' readFile El mètode ” també conté la funció de devolució de trucada necessària amb els paràmetres de “ error ' i ' contingut ”. Passeu el ' error ' al ' rebutjar() mètode ' en cas d'ocurrència d'errors i ' contingut ' al ' resoldre () ” mètode en cas de no trobar error.
  • Ara, creeu una funció asíncrona anomenada ' readFileSequentily() ' i conté un ' provar/atrapar ' bloc.
  • Dins del ' provar ” bloc, creeu tres variables emmagatzemant el resultat generat invocant el ja creat “ readFileAsync() ” funció. Cada vegada que el camí del fitxer desitjat que cal executar es passa dins d'aquest parèntesi de funció.
  • La paraula clau ' esperar ” també es col·loca darrere de la funció en el moment d'invocar per aturar el flux de control fins que es completa l'acció de llegir el fitxer.
  • A més, visualitzeu les variables a la consola per mostrar el contingut del fitxer recuperat o llegit.
  • Finalment, invoqueu el que conté ' readFileSequentily() ” funció.

Per executar-lo, col·loqueu el codi indicat anteriorment al fitxer desitjat amb una extensió de ' .js ” que resideix dins del vostre projecte Node.js. El fitxer principal en el nostre cas és ' controlFlow.js ”, de manera que la nostra ordre d'execució serà la següent:





node controlFlow. js

La sortida generada mostra que les dades dels fitxers desitjats que utilitzen el flux de control asíncron es mostren en seqüència:



Quines són les causes possibles i els passos d'evitació del codi bloquejat de Node.js?

El codi síncron també es coneix com ' Codi de bloc ” ja que atura l'execució dels processos fins a l'execució del procés en execució. Això provoca un rendiment i una capacitat de resposta deficients de l'aplicació. El codi de bloqueig es produeix normalment a causa d'operacions sincròniques o vinculades a la CPU. Les possibles causes del bloqueig del codi i com evitar-les s'indiquen a continuació a la taula:

Causes del bloqueig de codi Solució per al bloqueig de codi
Ús d'operacions de fitxers síncrones com fs.readFileSync(). Utilitzeu operacions de fitxer asíncrones com fs.readFile.
Ús d'operacions vinculades a la CPU, com ara càlculs pesats o bucles de llarga durada. Descarregueu les tasques vinculades a la CPU als fils de treball dividint-les en trossos més petits i que no bloquegen.
Sol·licituds de xarxa externes lentes a causa de l'ús de sol·licituds HTTP a API remotes Utilitzeu biblioteques HTTP asíncrones com Axios o els mòduls 'http' o 'https' integrats.
Consultes de bases de dades no optimitzades Optimitzeu les consultes de la base de dades mitjançant les eines d'optimització de consultes que ofereix la base de dades.
Ús de bucles infinits o bucles ajustats sense interrupcions. Assegureu-vos que els bucles tinguin condicions de sortida i que no funcionin infinitament.

Conclusió

El flux de control asíncron utilitza les paraules clau ' asíncron/espera ” per modificar o controlar el flux d'execució de manera asíncrona. La devolució de trucada per al mètode asíncron necessari s'abstraeix i s'emmagatzema en una funció independent. A continuació, s'invoca aquesta funció amb l'ajuda de la paraula clau await de manera seqüencial juntament amb altres mètodes segons es desitgi. Aquestes funcions s'emmagatzemen en una altra funció asíncrona personalitzada que després s'invoca per iniciar l'execució. Aquesta guia ha explicat el flux de control asíncron a Node.js.