ఈ వ్రాత-అప్ Node.jsలో అసమకాలిక నియంత్రణ ప్రవాహం యొక్క పని మరియు అమలును వివరిస్తుంది.
Node.jsలో అసమకాలిక నియంత్రణ ప్రవాహం అంటే ఏమిటి?
Node.jsలో అసమకాలిక నియంత్రణ ప్రవాహం అనేది నెట్వర్క్ అభ్యర్థనలు చేయడం, ఈవెంట్లను నిర్వహించడం మొదలైన అసమకాలిక కార్యకలాపాలతో వ్యవహరించేటప్పుడు మీరు అమలు చేసే విధానాన్ని మరియు నియంత్రించే విధానాన్ని సూచిస్తుంది. Node.js ప్రత్యేకంగా అసమకాలిక స్వభావం కోసం రూపొందించబడినప్పటికీ, నిర్దిష్ట కోడ్ ఉద్దేశించిన క్రమంలో అమలు చేయబడుతుందని మరియు లోపం నిర్వహణను సమర్థవంతంగా నిర్వహిస్తుందని నిర్ధారించుకోవడం ఉత్తమం.
అసమకాలిక నియంత్రణ ప్రవాహం యొక్క అవగాహన స్థాయిని మెరుగుపరచడానికి ఒక కోడ్ ఉదాహరణను చూద్దాం:
fsObj ఉంది = అవసరం ( 'fs' ) ;
//వియుక్త కాల్బ్యాక్ ఫంక్షన్
ఫంక్షన్ readFileAsync ( లక్ష్యం ఫైల్పాత్ ) {
తిరిగి కొత్త ప్రామిస్ ( ( పరిష్కరించు, తిరస్కరించు ) => {
fsObj. రీడ్ ఫైల్ ( టార్గెట్ ఫైల్పాత్, 'utf-8' , ( లోపం, కంటెంట్ ) => {
ఉంటే ( లోపం ) {
తిరస్కరించండి ( లోపం ) ;
} లేకపోతే {
పరిష్కరించండి ( విషయము ) ;
}
} ) ;
} ) ;
}
// బహుళ ఫైల్లను రీడ్లను క్రమంలో నిర్వహించడానికి ఫంక్షన్
async ఫంక్షన్ రీడ్ఫైల్ సీక్వెన్షియల్గా ( ) {
ప్రయత్నించండి {
స్థిరంగా ఫైల్1 డేటా = readFileAsync కోసం వేచి ఉండండి ( 'mynewfile1.txt' ) ;
కన్సోల్. లాగ్ ( 'మొదటి ఫైల్ డేటా:' , file1Data ) ;
స్థిరంగా ఫైల్2డేటా = readFileAsync కోసం వేచి ఉండండి ( 'usecase.txt' ) ;
కన్సోల్. లాగ్ ( 'రెండవ ఫైల్ డేటా:' , file2Data ) ;
స్థిరంగా file3Data = readFileAsync కోసం వేచి ఉండండి ( 'package.json' ) ;
కన్సోల్. లాగ్ ( 'మూడవ ఫైల్ డేటా:' , file3Data ) ;
} క్యాచ్ ( లోపం ) {
కన్సోల్. లోపం ( 'సంభవించిన లోపం:' , లోపం ) ;
}
}
రీడ్ ఫైల్ సీక్వెన్షియల్ గా ( ) ;
పై కోడ్ యొక్క వివరణ క్రింది విధంగా ఉంది:
- మొదట, దిగుమతి చేసుకోండి ' fs 'మాడ్యూల్ మరియు దాని వస్తువును 'లో నిల్వ చేయండి fsObj ” వేరియబుల్.
- అప్పుడు, ఒక 'ని నిర్వచించండి readFileAsync() '' అనే ఒకే పరామితిని కలిగి ఉన్న ఫంక్షన్ పేరు లక్ష్యం ఫైల్పాత్ ” ఇది లక్షిత ఫైల్ కోసం పాత్ను కలిగి ఉంటుంది.
- ఈ ఫంక్షన్ ఒక 'ని అందిస్తుంది వాగ్దానం ” ఇది రెండు పారామితులతో కూడిన అవసరమైన కాల్బ్యాక్ ఫంక్షన్ను కలిగి ఉంటుంది, అవి “ పరిష్కరించండి 'మరియు' తిరస్కరించండి ”.
- కాల్ బ్యాక్ ఫంక్షన్ లోపల, ' readFile() 'విధానం అందించబడింది' fs ” మాడ్యూల్. అలాగే, అందించిన పరామితిని పాస్ చేయండి “ లక్ష్యం ఫైల్పాత్ ”రీడ్ఫైల్()” పద్ధతికి మొదటి పారామీటర్గా.
- ది ' రీడ్ ఫైల్ 'పద్ధతి' యొక్క పారామితులను కలిగి ఉన్న అవసరమైన కాల్బ్యాక్ ఫంక్షన్ను కూడా కలిగి ఉంటుంది లోపం 'మరియు' విషయము ”. పాస్' లోపం 'లోకి' తిరస్కరించు() 'తప్పులు సంభవించినప్పుడు పద్ధతి మరియు' విషయము 'లోకి' పరిష్కారం () 'ఎటువంటి లోపం కనుగొనబడకపోతే పద్ధతి.
- ఇప్పుడు, '' అనే అసమకాలిక ఫంక్షన్ను సృష్టించండి readFileSequentially() 'మరియు అది ఒక' కలిగి ఉంటుంది ప్రయత్నించండి/పట్టుకోండి ”బ్లాక్.
- లోపల ' ప్రయత్నించండి 'బ్లాక్ చేయండి, ఇప్పటికే సృష్టించిన వాటిని అమలు చేయడం ద్వారా ఉత్పత్తి చేయబడిన ఫలితాన్ని నిల్వ చేయడానికి మూడు వేరియబుల్స్ సృష్టించండి' readFileAsync() ” ఫంక్షన్. ప్రతిసారీ అమలు చేయవలసిన కావలసిన ఫైల్ కోసం మార్గం ఈ ఫంక్షన్ కుండలీకరణం లోపల పంపబడుతుంది.
- కీవర్డ్ ' వేచి ఉండండి ” ఫైల్ని చదివే చర్య పూర్తయ్యే వరకు నియంత్రణ ప్రవాహాన్ని ఆపడానికి అమలు చేసే సమయంలో ఫంక్షన్ వెనుక కూడా ఉంచబడుతుంది.
- అలాగే, తిరిగి పొందిన లేదా రీడ్ ఫైల్ కంటెంట్ను ప్రదర్శించడానికి కన్సోల్లో వేరియబుల్లను ప్రదర్శించండి.
- చివరగా, కలిగి ఉన్న “ని పిలవండి readFileSequentially() ” ఫంక్షన్.
అమలు చేయడానికి, పైన పేర్కొన్న కోడ్ను మీరు కోరుకున్న ఫైల్లో పొడిగింపుతో ఉంచండి .js ” మీ Node.js ప్రాజెక్ట్ లోపల నివసిస్తున్నారు. మా కేసులో ప్రధాన ఫైల్ “ controlFlow.js ”, కాబట్టి మా అమలు ఆదేశం క్రింది విధంగా ఉంటుంది:
నోడ్ నియంత్రణ ప్రవాహం. js
ఉత్పత్తి చేయబడిన అవుట్పుట్ అసమకాలిక నియంత్రణ ప్రవాహాన్ని ఉపయోగించి కావలసిన ఫైల్ల కోసం డేటా క్రమంలో ప్రదర్శించబడుతుందని చూపిస్తుంది:
Node.js బ్లాక్ చేయబడిన కోడ్ కోసం సాధ్యమయ్యే కారణాలు మరియు అవాయిడెన్స్ దశలు ఏమిటి?
సింక్రోనస్ కోడ్ని '' అని కూడా అంటారు. బ్లాక్ కోడ్ ”అందువల్ల ఇది రన్నింగ్ ప్రాసెస్ను అమలు చేసే వరకు ప్రక్రియల అమలును నిలిపివేస్తుంది. ఇది పేలవమైన అప్లికేషన్ పనితీరు మరియు ప్రతిస్పందనకు దారితీస్తుంది. బ్లాక్ చేసే కోడ్ సాధారణంగా సింక్రోనస్ లేదా CPU-బౌండ్ ఆపరేషన్ల కారణంగా జరుగుతుంది. కోడ్ నిరోధించడానికి గల కారణాలు మరియు వాటిని ఎలా నివారించాలో పట్టికలో క్రింద పేర్కొనబడింది:
కోడ్ నిరోధించడానికి కారణాలు | కోడ్ బ్లాకింగ్ కోసం పరిష్కారం |
fs.readFileSync() వంటి సింక్రోనస్ ఫైల్ ఆపరేషన్ల ఉపయోగం. | fs.readFile వంటి అసమకాలిక ఫైల్ ఆపరేషన్లను ఉపయోగించండి. |
భారీ గణనలు లేదా దీర్ఘకాలిక లూప్ల వంటి CPU-బౌండ్ ఆపరేషన్ల ఉపయోగం. | CPU-బౌండ్ టాస్క్లను వర్కర్ థ్రెడ్లకు చిన్న, నాన్-బ్లాకింగ్ భాగాలుగా విభజించడం ద్వారా ఆఫ్లోడ్ చేయండి. |
రిమోట్ APIలకు HTTP అభ్యర్థనల వినియోగం కారణంగా బాహ్య నెట్వర్క్ అభ్యర్థనలు నెమ్మదించబడతాయి | Axios లేదా అంతర్నిర్మిత 'http' లేదా 'https' మాడ్యూల్స్ వంటి అసమకాలిక HTTP లైబ్రరీలను ఉపయోగించండి. |
ఆప్టిమైజ్ చేయని డేటాబేస్ ప్రశ్నలు | డేటాబేస్ అందించిన ప్రశ్న ఆప్టిమైజేషన్ సాధనాలను ఉపయోగించి డేటాబేస్ ప్రశ్నలను ఆప్టిమైజ్ చేయండి. |
విరామాలు లేకుండా అనంతమైన లూప్లు లేదా టైట్ లూప్ల వినియోగం. | లూప్లు నిష్క్రమణ పరిస్థితులను కలిగి ఉన్నాయని మరియు అనంతంగా అమలు చేయబడవని నిర్ధారించుకోండి. |
ముగింపు
అసమకాలిక నియంత్రణ ప్రవాహం కీలక పదాలను ఉపయోగిస్తుంది ' సమకాలీకరించు/నిరీక్షించు 'అసమకాలిక పద్ధతిలో అమలు యొక్క ప్రవాహాన్ని సవరించడానికి లేదా నియంత్రించడానికి. అవసరమైన అసమకాలిక పద్ధతి కోసం కాల్బ్యాక్ సంగ్రహించబడింది మరియు ప్రత్యేక ఫంక్షన్లో నిల్వ చేయబడుతుంది. ఈ ఫంక్షన్ తరువాత కోరుకున్న విధంగా ఇతర పద్ధతులతో పాటు వరుస పద్ధతిలో వేచి ఉండే కీవర్డ్ సహాయంతో ప్రారంభించబడుతుంది. ఈ ఫంక్షన్లు మరొక కస్టమ్ అసమకాలిక ఫంక్షన్లో నిల్వ చేయబడతాయి, ఇది అమలును ప్రారంభించడానికి ప్రారంభించబడుతుంది. ఈ గైడ్ Node.jsలో అసమకాలిక నియంత్రణ ప్రవాహాన్ని వివరించింది.