జావాస్క్రిప్ట్లో అసమకాలిక ఫంక్షన్ చైనింగ్తో వ్యవహరించడం
ఆధునిక JavaScript ప్రోగ్రామింగ్లో అసమకాలిక కార్యకలాపాలు కీలకమైన భాగం, బ్రౌజర్లు మరియు Node.js వంటి పరిసరాలలో నాన్-బ్లాకింగ్ ఎగ్జిక్యూషన్ను అనుమతిస్తుంది. అయినప్పటికీ, ఒకదానికొకటి కాల్ చేసుకునే అసమకాలిక ఫంక్షన్ల ప్రవాహాన్ని నిర్వహించడం గమ్మత్తైనది, ప్రత్యేకించి మీరు మొత్తం ప్రక్రియను ఆపకుండా గొలుసులో తుది ఫంక్షన్ కోసం వేచి ఉండాలనుకున్నప్పుడు.
ఈ దృష్టాంతంలో, మేము తరచుగా జావాస్క్రిప్ట్లపై ఆధారపడతాము మరియు సంక్లిష్ట అసమకాలిక ప్రవాహాలను నిర్వహించడానికి. కానీ ప్రామిస్లను ఉపయోగించడం లేదా ప్రతి ఫంక్షన్ కాల్ కోసం వేచి ఉండటం సరైనది కానప్పుడు, తక్షణ ప్రతిస్పందన కోసం వేచి ఉండకుండా ప్రోగ్రామ్ అమలును కొనసాగించడం వంటి సందర్భాలు ఉన్నాయి. ఇది డెవలపర్లకు కొత్త సవాలును పరిచయం చేసింది.
మీరు అందించిన ఉదాహరణ అనేక ఫంక్షన్లు అసమకాలికంగా ప్రేరేపించబడిన సాధారణ పరిస్థితిని ప్రదర్శిస్తుంది మరియు చివరి ఫంక్షన్ ఎప్పుడు పిలవబడిందో గుర్తించడానికి మాకు ఒక మార్గం అవసరం. ఇక్కడ సాంప్రదాయ వాగ్దానాలను ఉపయోగించడం పరిమితం కావచ్చు ఎందుకంటే ఇది కాలింగ్ ఫంక్షన్ను ఆపివేస్తుంది, దాని ప్రవాహాన్ని కొనసాగించడానికి బదులుగా ఫలితం కోసం వేచి ఉండవలసి వస్తుంది.
ఈ వ్యాసంలో, జావాస్క్రిప్ట్తో ఈ సమస్యను ఎలా పరిష్కరించాలో మేము విశ్లేషిస్తాము యంత్రాంగం. గొలుసులోని చివరి ఫంక్షన్ను పూర్తి చేస్తున్నప్పుడు, నేరుగా వేచి ఉండకుండా మెయిన్ ఫంక్షన్ కొనసాగుతుందని నిర్ధారించడానికి మేము ఆచరణాత్మక విధానాన్ని పరిశీలిస్తాము.
ఆదేశం | ఉపయోగం యొక్క ఉదాహరణ |
---|---|
setTimeout() | ఈ ఫంక్షన్ నిర్దిష్ట సమయ వ్యవధిలో ఫంక్షన్ యొక్క అమలును ఆలస్యం చేయడానికి ఉపయోగించబడుతుంది. ఈ సందర్భంలో, అసమకాలిక ప్రవర్తనను అనుకరించడం కోసం ఇది కీలకమైనది, ప్రధాన థ్రెడ్ను నిరోధించకుండా ఆలస్యం తర్వాత గొలుసులోని తదుపరి ఫంక్షన్ని కాల్ చేయడానికి అనుమతిస్తుంది. |
async/await | అసమకాలిక ఫంక్షన్లను ప్రకటించడానికి అసమకాలిక కీవర్డ్ ఉపయోగించబడుతుంది, అయితే వాగ్దానం పరిష్కరించబడే వరకు నిరీక్షణ అనేది అమలును పాజ్ చేస్తుంది. ఇతర కోడ్ అమలును నేరుగా నిరోధించకుండా JavaScriptలో అసమకాలిక ఫంక్షన్ గొలుసులను నిర్వహించడానికి ఈ నమూనా అవసరం. |
Promise | ప్రామిస్ ఆబ్జెక్ట్ అనేది అసమకాలిక ఆపరేషన్ యొక్క చివరి పూర్తి (లేదా వైఫల్యం)ని సూచించడానికి ఉపయోగించబడుతుంది. ఇది నాన్-బ్లాకింగ్ కోడ్ ఎగ్జిక్యూషన్ని ప్రారంభిస్తుంది మరియు మునుపటి ఫంక్షన్లను అసమకాలికంగా అమలు చేయడానికి అనుమతించేటప్పుడు చివరి ఫంక్షన్ సరైన క్రమంలో అమలు చేయబడిందని నిర్ధారించడానికి ఉపయోగించబడుతుంది. |
callback() | కాల్బ్యాక్ అనేది మరొక ఫంక్షన్కు ఆర్గ్యుమెంట్గా పంపబడిన ఫంక్షన్, అసమకాలిక ఆపరేషన్ పూర్తయిన తర్వాత అమలు చేయబడుతుంది. ఇక్కడ, ప్రవాహాన్ని ఆపివేయకుండా ఫంక్షన్లను అమలు చేయడానికి అనుమతించడానికి ఇది ఉపయోగించబడుతుంది, సీక్వెన్స్లోని చివరి ఫంక్షన్ పిలిచే వరకు వేచి ఉంటుంది. |
EventEmitter | Node.js సొల్యూషన్లో, అనుకూల ఈవెంట్లను సృష్టించడానికి, వినడానికి మరియు నిర్వహించడానికి EventEmitter ఉపయోగించబడుతుంది. అసమకాలిక వర్క్ఫ్లోలను నిర్వహించేటప్పుడు ఇది చాలా కీలకం, ఎందుకంటే ఈవెంట్లు నేరుగా కాల్ చేయకుండానే ఫంక్షన్లను ట్రిగ్గర్ చేయగలవు. |
emit() | EventEmitter యొక్క ఈ పద్ధతి ఒక ఈవెంట్ సంభవించిందని సంకేతాన్ని పంపుతుంది. ఇది అసమకాలిక ఈవెంట్-ఆధారిత ప్రోగ్రామింగ్ను అనుమతిస్తుంది, ఉదాహరణకు ఒక ఫంక్షన్ ఈవెంట్ను విడుదల చేయడం ద్వారా తదుపరి దాన్ని ట్రిగ్గర్ చేస్తుంది. |
on() | ఈవెంట్ శ్రోతలను నిర్దిష్ట ఈవెంట్లకు బంధించడానికి EventEmitter యొక్క ఆన్() పద్ధతి ఉపయోగించబడుతుంది. ఈవెంట్ విడుదలైనప్పుడు, లిజనర్ ఫంక్షన్ అమలు చేయబడుతుంది, అసమకాలిక కార్యకలాపాలు సరైన క్రమంలో పూర్తి అయ్యేలా చూస్తుంది. |
resolve() | పరిష్కార() పద్ధతి ప్రామిస్ APIలో భాగం, ఇది అసమకాలిక ఆపరేషన్ పూర్తయిన తర్వాత వాగ్దానాన్ని పరిష్కరించడానికి ఉపయోగించబడుతుంది. ఇతర కోడ్లను నిరోధించకుండానే అసమకాలిక గొలుసు ముగింపును సూచించడంలో ఇది కీలకం. |
await | ప్రామిస్కు ముందు ఉంచబడినది, ప్రామిస్ పరిష్కరించబడే వరకు నిరీక్షణ అనేది అసమకాలిక ఫంక్షన్ అమలును పాజ్ చేస్తుంది. చైన్లోని చివరి ఫంక్షన్ను కొనసాగించే ముందు ఎగ్జిక్యూషన్ను పూర్తి చేస్తుందని నిర్ధారించేటప్పుడు ఇది ఇతర కోడ్ను నిరోధించడాన్ని నిరోధిస్తుంది. |
Async/Await మరియు Callbacksతో అసమకాలిక ఫంక్షన్ హ్యాండ్లింగ్ను అర్థం చేసుకోవడం
మొదటి స్క్రిప్ట్ ఉపయోగించుకుంటుంది అసమకాలిక ఫంక్షన్ అమలును నిర్వహించడానికి. ది కీవర్డ్ వాగ్దానాన్ని తిరిగి ఇవ్వడానికి ఫంక్షన్లను అనుమతిస్తుంది, ఇది అసమకాలిక కార్యకలాపాలను వరుసగా నిర్వహించడాన్ని సులభతరం చేస్తుంది. ఈ సందర్భంలో, ఫంక్షన్సెకండ్ని అసమకాలికంగా కాల్ చేయడానికి ఫంక్షన్ఫస్ట్ బాధ్యత వహిస్తుంది . ఫంక్షన్ఫస్ట్ ఫంక్షన్సెకండ్ పూర్తయ్యే వరకు వేచి ఉండనప్పటికీ, మేము ఉపయోగిస్తాము వేచి ఉండండి ప్రధాన థ్రెడ్ కొనసాగడానికి ముందు అన్ని అసమకాలిక కార్యకలాపాల పూర్తి కోసం వేచి ఉండేలా ఫంక్షన్మెయిన్లో. ఇది JavaScriptలో నాన్-బ్లాకింగ్ ప్రవర్తనను కొనసాగిస్తూనే అసమకాలిక సంఘటనల ప్రవాహంపై మెరుగైన నియంత్రణను అందిస్తుంది.
ఈ విధానం యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే, ఇతర ఫంక్షన్ల అమలును నిరోధించకుండా మనం సంక్లిష్టమైన అసమకాలిక ప్రవాహాలను నిర్వహించగలము. ప్రతి ఫంక్షన్ కాల్ వద్ద వేచి ఉండమని ప్రోగ్రామ్ను బలవంతం చేయడానికి బదులుగా, నేపథ్యంలో పరిష్కరించబడే వాగ్దానాల కోసం వేచి ఉన్నప్పుడు కోడ్ని అమలు చేయడం కొనసాగించడానికి async/awaiట్ అనుమతిస్తుంది. ఇది పనితీరును మెరుగుపరుస్తుంది మరియు ఫ్రంట్-ఎండ్ అప్లికేషన్లలో వినియోగదారు ఇంటర్ఫేస్ను ప్రతిస్పందించేలా చేస్తుంది. ప్రతి ఫంక్షన్లో ఆలస్యం సర్వర్ అభ్యర్థన లేదా డేటాబేస్ ప్రశ్న వంటి అసమకాలిక పనిని అనుకరిస్తుంది. గొలుసులోని అన్ని విధులు అమలు చేయబడినప్పుడు ప్రామిస్ మెకానిజం పరిష్కరిస్తుంది, ప్రతిదీ పూర్తయిన తర్వాత మాత్రమే తుది లాగ్ స్టేట్మెంట్ కనిపిస్తుంది.
రెండవ పరిష్కారంలో, మేము ఉపయోగిస్తాము ఇదే విధమైన నాన్-బ్లాకింగ్ అసమకాలిక ప్రవాహాన్ని సాధించడానికి. ఫంక్షన్ఫస్ట్ని పిలిచినప్పుడు, అది ఫంక్షన్సెకండ్ను కాల్చివేస్తుంది మరియు దాని పూర్తి కోసం వేచి ఉండకుండా వెంటనే తిరిగి వస్తుంది. ఆర్గ్యుమెంట్గా పాస్ చేయబడిన కాల్బ్యాక్ ఫంక్షన్ కరెంట్ పూర్తయినప్పుడు గొలుసులోని తదుపరి ఫంక్షన్ను ట్రిగ్గర్ చేయడం ద్వారా ప్రవాహాన్ని నియంత్రించడంలో సహాయపడుతుంది. వాగ్దానాలు లేదా అసమకాలిక/నిరీక్షణను ఉపయోగించకుండా అమలు చేసే క్రమంలో మరింత ప్రత్యక్ష నియంత్రణ అవసరమయ్యే వాతావరణాల్లో ఈ నమూనా ప్రత్యేకంగా ఉపయోగపడుతుంది. అయినప్పటికీ, అసమకాలిక కార్యకలాపాల యొక్క లోతైన గొలుసులతో వ్యవహరించేటప్పుడు కాల్బ్యాక్లు "కాల్బ్యాక్ హెల్"కి దారితీయవచ్చు.
చివరగా, మూడవ పరిష్కారం ఉపయోగిస్తుంది అసమకాలిక కాల్లను మరింత అధునాతన మార్గంలో నిర్వహించడానికి. ప్రతి అసమకాలిక ఫంక్షన్ ముగిసిన తర్వాత అనుకూల ఈవెంట్లను విడుదల చేయడం ద్వారా, తదుపరి ఫంక్షన్ను ఎప్పుడు ప్రారంభించాలనే దానిపై మేము పూర్తి నియంత్రణను పొందుతాము. ఈవెంట్-ఆధారిత ప్రోగ్రామింగ్ ముఖ్యంగా బ్యాకెండ్ పరిసరాలలో ప్రభావవంతంగా ఉంటుంది, ఎందుకంటే ఇది బహుళ అసమకాలిక కార్యకలాపాలతో వ్యవహరించేటప్పుడు మరింత స్కేలబుల్ మరియు నిర్వహించదగిన కోడ్ను అనుమతిస్తుంది. ది నిర్దిష్ట సంఘటనలు జరిగినప్పుడు పద్ధతి సంకేతాలను పంపుతుంది మరియు శ్రోతలు ఈ ఈవెంట్లను అసమకాలికంగా నిర్వహిస్తారు. ఈ పద్ధతి గొలుసులోని చివరి ఫంక్షన్ని అమలు చేసిన తర్వాత మాత్రమే ప్రధాన విధి కొనసాగుతుందని నిర్ధారిస్తుంది, అసమకాలిక విధి నిర్వహణకు మరింత మాడ్యులర్ మరియు పునర్వినియోగ విధానాన్ని అందిస్తుంది.
సమకాలీకరణ/నిరీక్షణ: అసమకాలిక జావాస్క్రిప్ట్ కాల్లలో ప్రత్యక్ష నిరీక్షణ లేకుండా కొనసాగింపును నిర్ధారించడం
ఆధునిక జావాస్క్రిప్ట్ని ఉపయోగించి ఫ్రంట్-ఎండ్ సొల్యూషన్ (అసింక్/వెయిట్తో)
// Solution 1: Using async/await with Promises in JavaScript
async function functionFirst() {
console.log('First is called');
setTimeout(functionSecond, 1000);
console.log('First fired Second and does not wait for its execution');
return new Promise(resolve => {
setTimeout(resolve, 2000); // Set timeout for the entire chain to complete
});
}
function functionSecond() {
console.log('Second is called');
setTimeout(functionLast, 1000);
}
function functionLast() {
console.log('Last is called');
}
async function functionMain() {
await functionFirst();
console.log('called First and continue only after Last is done');
}
functionMain();
నాన్-బ్లాకింగ్ ఫ్లో కోసం కాల్బ్యాక్లను ఉపయోగించి అసమకాలిక గొలుసులను నిర్వహించడం
సాదా జావాస్క్రిప్ట్లో కాల్బ్యాక్ ఫంక్షన్లను ఉపయోగించి ఫ్రంట్-ఎండ్ విధానం
// Solution 2: Using Callbacks to Manage Asynchronous Flow Without Blocking
function functionFirst(callback) {
console.log('First is called');
setTimeout(() => {
functionSecond(callback);
}, 1000);
console.log('First fired Second and does not wait for its execution');
}
function functionSecond(callback) {
console.log('Second is called');
setTimeout(() => {
functionLast(callback);
}, 1000);
}
function functionLast(callback) {
console.log('Last is called');
callback();
}
function functionMain() {
functionFirst(() => {
console.log('called First and continue only after Last is done');
});
}
functionMain();
అసమకాలిక ప్రవాహంపై పూర్తి నియంత్రణ కోసం ఈవెంట్ ఎమిటర్లను ఉపయోగించడం
అసమకాలిక ప్రవాహ నియంత్రణ కోసం Node.js మరియు ఈవెంట్ ఎమిటర్లను ఉపయోగించి బ్యాకెండ్ విధానం
// Solution 3: Using Node.js EventEmitter to Handle Asynchronous Functions
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
function functionFirst() {
console.log('First is called');
setTimeout(() => {
eventEmitter.emit('secondCalled');
}, 1000);
console.log('First fired Second and does not wait for its execution');
}
function functionSecond() {
console.log('Second is called');
setTimeout(() => {
eventEmitter.emit('lastCalled');
}, 1000);
}
function functionLast() {
console.log('Last is called');
}
eventEmitter.on('secondCalled', functionSecond);
eventEmitter.on('lastCalled', functionLast);
function functionMain() {
functionFirst();
eventEmitter.on('lastCalled', () => {
console.log('called First and continue only after Last is done');
});
}
functionMain();
జావాస్క్రిప్ట్లో అసమకాలిక ఫంక్షన్ ఎగ్జిక్యూషన్ను నిర్వహించడానికి అధునాతన పద్ధతులు
ఉపయోగిస్తున్నప్పుడు మరియు జావాస్క్రిప్ట్లో అసమకాలిక ప్రవాహాలను నిర్వహించడానికి ప్రభావవంతంగా ఉంటాయి, శ్రద్ధకు అర్హమైన మరొక శక్తివంతమైన సాధనం జావాస్క్రిప్ట్ ఉపయోగం అసమకాలిక కార్యాచరణతో కలిపి. జెనరేటర్ ఫంక్షన్ కాలర్కు నియంత్రణను తిరిగి అందించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇది పునరావృత ప్రక్రియలను నిర్వహించడానికి ఇది పరిపూర్ణంగా చేస్తుంది. జనరేటర్లను కలపడం ద్వారా వాగ్దానాలు, మీరు అసమకాలిక వర్క్ఫ్లోల కోసం ఫ్లెక్సిబిలిటీ యొక్క మరొక లేయర్ని అందిస్తూ మరింత నియంత్రిత మార్గంలో అమలును పాజ్ చేయవచ్చు మరియు పునఃప్రారంభించవచ్చు.
అసమకాలిక ఫంక్షన్ కాల్లపై మీకు మరింత గ్రాన్యులర్ నియంత్రణ అవసరమయ్యే సందర్భాల్లో జనరేటర్లు ప్రత్యేకంగా ఉపయోగపడతాయి. నిర్దిష్ట పాయింట్ల వద్ద ఎగ్జిక్యూషన్ను అందించడానికి మరియు బాహ్య సిగ్నల్ లేదా వాగ్దానం రిజల్యూషన్ పునఃప్రారంభించేందుకు వేచి ఉండటానికి మిమ్మల్ని అనుమతించడం ద్వారా అవి పని చేస్తాయి. మీరు ఫంక్షన్ల మధ్య సంక్లిష్ట డిపెండెన్సీలను కలిగి ఉన్న సందర్భాల్లో లేదా బహుళ దశల్లో నాన్-బ్లాకింగ్ ఆపరేషన్లు అవసరమయ్యే సందర్భాల్లో ఇది సహాయకరంగా ఉంటుంది. అయినప్పటికీ తరచుగా సరళంగా ఉంటుంది, జనరేటర్లను ఉపయోగించడం వలన మీకు మరింత అనుకూలీకరించిన మార్గంలో అసమకాలిక ప్రవాహాన్ని నియంత్రించే సామర్థ్యం లభిస్తుంది.
మరొక ముఖ్యమైన పరిశీలన అసమకాలిక కోడ్లో లోపం నిర్వహణ. సింక్రోనస్ ఆపరేషన్ల వలె కాకుండా, అసమకాలిక ఫంక్షన్లలోని లోపాలను తప్పనిసరిగా గుర్తించాలి బ్లాక్లు లేదా తిరస్కరించబడిన వాగ్దానాలను నిర్వహించడం ద్వారా. మీ అసమకాలీకరణ వర్క్ఫ్లోలలో సరైన ఎర్రర్ హ్యాండ్లింగ్ను ఎల్లప్పుడూ చేర్చడం చాలా ముఖ్యం, ఎందుకంటే ఇది చైన్లోని ఒక ఫంక్షన్ విఫలమైతే, అది మొత్తం అప్లికేషన్ను విచ్ఛిన్నం చేయదని నిర్ధారిస్తుంది. మీ అసమకాలిక కార్యకలాపాలకు లాగింగ్ మెకానిజమ్లను జోడించడం వలన మీరు పనితీరును ట్రాక్ చేయవచ్చు మరియు సంక్లిష్ట అసమకాలిక ప్రవాహాలలో సమస్యలను నిర్ధారించవచ్చు.
- మధ్య తేడా ఏమిటి మరియు ?
- వాక్యనిర్మాణ చక్కెర పైన నిర్మించబడింది , క్లీనర్ మరియు మరింత చదవగలిగే అసమకాలిక కోడ్ని అనుమతిస్తుంది. గొలుసుకు బదులుగా , మీరు ఉపయోగించండి await వరకు ఫంక్షన్ అమలును పాజ్ చేయడానికి పరిష్కరిస్తుంది.
- నేను కలపవచ్చా మరియు ?
- అవును, మీరు రెండింటినీ ఒకే కోడ్బేస్లో ఉపయోగించవచ్చు. అయితే, కాల్బ్యాక్ ఫంక్షన్లు విరుద్ధంగా లేవని నిర్ధారించుకోవడం ముఖ్యం లేదా ఉపయోగం, ఇది ఊహించని ప్రవర్తనకు దారి తీస్తుంది.
- లోపాలను నేను ఎలా నిర్వహించగలను విధులు?
- మీరు మీ చుట్టవచ్చు లోపల కాల్స్ a అసమకాలిక అమలు సమయంలో సంభవించే ఏవైనా లోపాలను పట్టుకోవడానికి బ్లాక్ చేయండి, మీ యాప్ సజావుగా కొనసాగుతుందని నిర్ధారించుకోండి.
- పాత్ర ఏమిటి అసమకాలిక కోడ్లో?
- ది కస్టమ్ ఈవెంట్లను విడుదల చేయడానికి మరియు వాటిని వినడానికి మిమ్మల్ని అనుమతిస్తుంది, Node.jsలో బహుళ అసమకాలిక పనులను నిర్వహించడానికి నిర్మాణాత్మక మార్గాన్ని అందిస్తుంది.
- నేను ఉపయోగించకపోతే ఏమి జరుగుతుంది ఒక లో ఫంక్షన్?
- మీరు ఉపయోగించకపోతే , ఫంక్షన్ కోసం వేచి ఉండకుండా అమలు చేయడం కొనసాగుతుంది పరిష్కరించడానికి, సంభావ్యంగా అనూహ్య ఫలితాలకు దారి తీస్తుంది.
అసమకాలిక ప్రవాహాలను నిర్వహించడం సవాలుగా ఉంటుంది, ప్రత్యేకించి ఫంక్షన్లు ఒకదానికొకటి ప్రేరేపించినప్పుడు. ప్రామిసెస్తో అసమకాలీకరించు/నిరీక్షణను ఉపయోగించడం వల్ల ప్రోగ్రామ్ అనవసరంగా నిరోధించబడకుండా సాఫీగా నడుస్తుందని నిర్ధారించుకోవడంలో సహాయపడుతుంది, ఇది ఫంక్షన్ చైన్లు పూర్తయ్యే వరకు వేచి ఉండాల్సిన పరిస్థితులకు అనువైనదిగా చేస్తుంది.
ఈవెంట్-ఆధారిత విధానాలు లేదా కాల్బ్యాక్లను చేర్చడం వలన సర్వర్ అభ్యర్థనలను నిర్వహించడం లేదా సంక్లిష్ట ప్రక్రియలను నిర్వహించడం వంటి నిర్దిష్ట వినియోగ కేసుల కోసం మరొక స్థాయి నియంత్రణను జోడిస్తుంది. ఈ సాంకేతికతలను కలపడం వలన డెవలపర్లు బహుళ అసమకాలిక కార్యకలాపాలతో వ్యవహరించేటప్పుడు కూడా సమర్థవంతమైన మరియు ప్రతిస్పందించే అప్లికేషన్లను సృష్టించగలరని నిర్ధారిస్తుంది.
- ఆధునిక జావాస్క్రిప్ట్ అప్లికేషన్లలో సమకాలీకరణ/నిరీక్షణ మరియు వాగ్దానాల వినియోగాన్ని వివరిస్తుంది: MDN వెబ్ డాక్స్: async ఫంక్షన్
- Node.js EventEmitterతో అసమకాలిక ఈవెంట్లను నిర్వహించడం గురించిన వివరాలు: Node.js EventEmitter డాక్యుమెంటేషన్
- కాల్బ్యాక్లు మరియు అసమకాలిక ప్రోగ్రామింగ్లో వాటి పాత్రను చర్చిస్తుంది: జావాస్క్రిప్ట్ సమాచారం: కాల్బ్యాక్లు
- ట్రై/క్యాచ్తో అసమకాలిక ఆపరేషన్లలో ఎర్రర్ హ్యాండ్లింగ్ యొక్క అవలోకనం: MDN వెబ్ డాక్స్: ప్రయత్నించండి...పట్టుకోండి