समय में जावास्क्रिप्ट एसिंक/प्रतीक्षा व्यवहार को स्पष्ट करना
आधुनिक जावास्क्रिप्ट विकास में, async/प्रतीक्षा करें एसिंक्रोनस कोड को संभालने के लिए एक आवश्यक उपकरण बन गया है। इसकी उपयोगिता के बावजूद, जब इन तकनीकों का उपयोग करने वाले कार्यों में आउटपुट के सटीक समय की भविष्यवाणी करने की बात आती है तो कई डेवलपर्स को भ्रम का सामना करना पड़ता है। यह एडाफेस जैसे कोडिंग आकलन में विशेष रूप से सच है, जहां अतुल्यकालिक संचालन के प्रवाह को समझना महत्वपूर्ण है।
जिस समस्या पर आप काम कर रहे हैं वह दो अतुल्यकालिक कार्यों को प्रस्तुत करती है जिनका व्यवहार समान प्रतीत होता है, लेकिन समय के संदर्भ में अलग-अलग परिणाम होते हैं। पहली नज़र में, दोनों कार्यों में 10 सेकंड लग सकते हैं, लेकिन वास्तविक उत्तर कई डेवलपर्स को आश्चर्यचकित करता है, क्योंकि इसमें वादों को कैसे हल किया जाता है इसकी गहरी समझ शामिल है।
इस लेख का उद्देश्य आपको कोड के बारे में बताना है और यह बताना है कि कैसे async और इंतजार यांत्रिकी काम करती है, साथ ही वादा समाधान का क्रम अंतिम परिणाम को कैसे प्रभावित करता है। इसके अंत तक, आपको इस बात की स्पष्ट समझ होनी चाहिए कि एसिंक्रोनस जावास्क्रिप्ट में टाइमिंग कैसे काम करती है।
आइए यह समझने के लिए कोड में गोता लगाएँ कि पहला फ़ंक्शन आउटपुट क्यों देता है 24 5 सेकंड के बाद, और दूसरा फ़ंक्शन भी आउटपुट करता है 24 लेकिन एक अलग वादा संरचना के साथ। इस ज्ञान के साथ, आप अपने आगामी साक्षात्कार मूल्यांकन के लिए बेहतर ढंग से सुसज्जित होंगे।
आज्ञा | उपयोग का उदाहरण |
---|---|
सेटटाइमआउट | setTimeout(() =>सेटटाइमआउट(() => { res(x); }, 5000); यह कमांड एक निर्दिष्ट विलंब के बाद किसी फ़ंक्शन को निष्पादित करता है। इस संदर्भ में, इसका उपयोग 5 सेकंड के बाद एक मान लौटाकर अतुल्यकालिक व्यवहार का अनुकरण करने के लिए किया जाता है। |
नया वादा | return new Promise(res =>नया वादा लौटाएँ(res => {...}); एक नया वादा बनाता है जो एसिंक्रोनस कोड को लपेटता है, जो एसिंक ऑपरेशन पूरा होने के बाद मानों को हल करने या अस्वीकार करने की अनुमति देता है। |
इंतजार | स्थिरांक f = 5s के बाद प्रतीक्षा करें(3); वादे का समाधान होने तक एसिंक फ़ंक्शन निष्पादन को रोक देता है, जिससे कोड एक एसिंक्रोनस फ़ंक्शन के भीतर समकालिक रूप से व्यवहार करता है। |
एसिंक फ़ंक्शन | एसिंक फ़ंक्शन मल्टी(इनपुट) {...} एक अतुल्यकालिक फ़ंक्शन की घोषणा करता है जो इसके उपयोग की अनुमति देता है इंतजार अतुल्यकालिक परिचालनों को साफ़ और पठनीय तरीके से संभालने के लिए। |
तब | mult(2).then(value =>mult(2).then(value => {...}); किसी वादे के साथ कॉलबैक जोड़ता है. जब वादा हल हो जाता है, तो कॉलबैक को हल किए गए मूल्य के साथ निष्पादित किया जाता है। |
समवर्तीता का वादा करें | स्थिरांक f = After5s(3); स्थिरांक जी = After5s(4); यह दो वादों को समानांतर में चलाने की अनुमति देता है, दूसरे को शुरू करने से पहले एक के समाधान की प्रतीक्षा किए बिना, इस प्रकार प्रदर्शन में सुधार होता है। |
कंसोल.लॉग | कंसोल.लॉग(मान); डिबगिंग या परिणाम जांच उद्देश्यों के लिए कंसोल पर मान आउटपुट करता है। |
आर ई | रेस(x); के लिए एक आशुलिपि संकल्प वादों में, वादे को पूर्ण के रूप में चिह्नित करने और मूल्य वापस करने को कहा जाता है। |
इनपुट * प्रतीक्षा करें एफ | रिटर्न इनपुट * प्रतीक्षा एफ * प्रतीक्षा जी; दो अतुल्यकालिक परिचालनों के हल किए गए मानों द्वारा इनपुट को गुणा करता है, यह सुनिश्चित करता है कि गणना करने से पहले दोनों वादे हल हो गए हैं। |
जावास्क्रिप्ट में एसिंक्रोनस ऑपरेशंस की खोज
प्रदान की गई स्क्रिप्ट जावास्क्रिप्ट का उपयोग करके अतुल्यकालिक संचालन की शक्ति को प्रदर्शित करती है async और इंतजार कीवर्ड. मुख्य विचार विलंबित संचालन जैसे अतुल्यकालिक कार्यों को कुशलतापूर्वक संभालना है। दोनों उदाहरणों में, function After5s(x) मूल्य के साथ हल होने वाले वादे को वापस करके 5 सेकंड की देरी का अनुकरण करता है एक्स. यह देरी संचालन के अनुक्रम को समझने के लिए आवश्यक है और वादे फ़ंक्शन के प्रवाह के साथ कैसे बातचीत करते हैं।
पहले समारोह में, एकाधिक(इनपुट), कोड क्रमिक रूप से दो वादों के समाधान की प्रतीक्षा करता है। इंतजार कीवर्ड यह सुनिश्चित करता है कि कोड तब तक निष्पादन को रोक देता है जब तक कि वादा पूरा नहीं हो जाता 5s के बाद(3) समाधान हो गया है. फिर, पहला वादा पूरा होने के बाद, कोड दूसरे वादे के लिए 5 सेकंड और प्रतीक्षा करता है 5s के बाद(4) हल करने के लिए। इसके परिणामस्वरूप गणना करने से पहले कुल 10 सेकंड का प्रतीक्षा समय लगता है। दोनों हल किए गए मानों द्वारा इनपुट का गुणा अंतिम आउटपुट देता है।
दूसरा कार्य, दूसरा_मल्टी(इनपुट), दोनों वादों को एक साथ शुरू करके प्रदर्शन में सुधार करता है। नियुक्त करके 5s के बाद(3) और 5s के बाद(4) लागू करने से पहले चर के लिए इंतजार, दोनों वादे समानांतर चलते हैं। जब कोड पहुंचता है इंतजार कथन, यह दोनों वादों के समाधान की प्रतीक्षा करता है, लेकिन वे पहले से ही प्रगति पर हैं, जिससे कुल प्रतीक्षा समय घटकर केवल 5 सेकंड रह गया है। यह समवर्ती निष्पादन अतुल्यकालिक संचालन को अनुकूलित करने के महत्व पर प्रकाश डालता है।
ये स्क्रिप्ट दर्शाती हैं कि एसिंक्रोनस कोड को साफ-सुथरे ढंग से संभालने के लिए एसिंक्स और वेट का उपयोग कैसे किया जा सकता है। प्रदर्शन को अनुकूलित करने के लिए अतुल्यकालिक कार्यों को समवर्ती या क्रमिक रूप से कब चलाना है यह समझना महत्वपूर्ण है। दूसरा_मल्टी फ़ंक्शन का दृष्टिकोण अनावश्यक देरी से बचने का लाभ दिखाता है, जबकि पहला उदाहरण तब उपयोगी होता है जब संचालन एक विशिष्ट क्रम में होना चाहिए। दोनों उदाहरण वास्तविक दुनिया के परिदृश्यों में व्यापक रूप से लागू होते हैं वादा संभालना आवश्यक है, जैसे एपीआई से डेटा प्राप्त करना या बाहरी संसाधनों पर निर्भर संचालन करना।
जावास्क्रिप्ट टाइमिंग में Async/प्रतीक्षा व्यवहार की व्याख्या
यह उदाहरण जावास्क्रिप्ट का उपयोग करके अतुल्यकालिक संचालन को प्रदर्शित करता है async और इंतजार कार्य.
function after5s(x) {
return new Promise(res => {
setTimeout(() => {
res(x);
}, 5000);
});
}
// First approach using async/await with sequential waits
async function mult(input) {
const f = await after5s(3);
const g = await after5s(4);
return input * f * g;
}
// Calling the function and handling the promise resolution
mult(2).then(value => {
console.log(value); // Output: 24 after 10 seconds
});
समवर्ती निष्पादन के लिए Async/प्रतीक्षा को अनुकूलित करना
कोड का यह संस्करण प्रत्येक वादे के लिए क्रमिक रूप से प्रतीक्षा करने से बचने के लिए वादा समवर्तीता का उपयोग करके एसिंक प्रक्रिया को अनुकूलित करता है।
function after5s(x) {
return new Promise(res => {
setTimeout(() => {
res(x);
}, 5000);
});
}
// Second approach optimizing by starting both promises concurrently
async function second_mult(input) {
const f = after5s(3); // Starts promise immediately
const g = after5s(4); // Starts second promise concurrently
return input * await f * await g;
}
// Calling the function and handling the promise resolution
second_mult(2).then(value => {
console.log(value); // Output: 24 after 5 seconds
});
जावास्क्रिप्ट में अतुल्यकालिक पैटर्न में महारत हासिल करना
आधुनिक जावास्क्रिप्ट में सबसे महत्वपूर्ण अवधारणाओं में से एक यह है कि अतुल्यकालिक कार्यों को कुशलतापूर्वक कैसे संभाला जाए। जब async/प्रतीक्षा करें सिंटैक्स एसिंक्रोनस कोड की पठनीयता को सरल बनाता है, ऐसे अन्य कारक भी हैं जिन पर डेवलपर्स को विचार करना चाहिए। एसिंक फ़ंक्शंस का उपयोग करने का एक महत्वपूर्ण पहलू यह समझना है कि जावास्क्रिप्ट इसे कैसे प्रबंधित करता है इवेंट लूप और एसिंक्रोनस कॉल स्टैक। इवेंट लूप जावास्क्रिप्ट को गैर-अवरुद्ध कार्यों, जैसे वादों, को कतार में धकेल कर और अन्य कोड के निष्पादन को जारी रखते हुए, एकल-थ्रेडेड वातावरण में भी, कई कार्यों को एक साथ निष्पादित करने की अनुमति देता है।
एसिंक्रोनस ऑपरेशंस में अक्सर अनदेखा किया जाने वाला तत्व त्रुटि प्रबंधन है। एसिंक/प्रतीक्षा सिंटैक्स का उपयोग करके, डेवलपर्स अपने कोड को एक में लपेट सकते हैं कोशिश करो...पकड़ो वादा अस्वीकृतियों और अन्य त्रुटियों को शालीनता से प्रबंधित करने के लिए ब्लॉक करें। यह विधि सुनिश्चित करती है कि एसिंक्रोनस ऑपरेशन में होने वाली किसी भी त्रुटि को प्रोग्राम के प्रवाह को तोड़े बिना पकड़ा और नियंत्रित किया जाता है। एसिंक्रोनस फ़ंक्शंस न केवल प्रदर्शन में सुधार करते हैं बल्कि जटिल त्रुटि प्रबंधन को अधिक कुशल और डीबग करना आसान बनाते हैं।
फोकस का एक अन्य प्रमुख क्षेत्र है कैसे वादा.सभी एक साथ कई वादों को संभालने के लिए इस्तेमाल किया जा सकता है। पहले उदाहरण की तरह क्रमिक रूप से वादों की प्रतीक्षा करने के विपरीत, वादा.सभी सभी वादों को एक साथ निष्पादित करता है, परिणाम एक सरणी में लौटाता है। एकाधिक एपीआई कॉल करते समय या कई कार्य निष्पादित करते समय यह विधि बेहद सहायक होती है जहां निष्पादन का क्रम महत्वपूर्ण नहीं होता है। इष्टतम और स्केलेबल जावास्क्रिप्ट कोड लिखने के लिए समवर्ती कार्यों को ठीक से कैसे व्यवस्थित किया जाए, यह समझना महत्वपूर्ण है।
जावास्क्रिप्ट में Async/Await पर अक्सर पूछे जाने वाले प्रश्न
- का उद्देश्य क्या है async जावास्क्रिप्ट में?
- async कीवर्ड किसी फ़ंक्शन को वादा वापस करने की अनुमति देता है और इसके उपयोग को सक्षम बनाता है await फ़ंक्शन के भीतर.
- क्या करता है await कीवर्ड करें?
- await कीवर्ड वादा पूरा होने तक फ़ंक्शन निष्पादन को रोक देता है, यह सुनिश्चित करता है कि अतुल्यकालिक कार्यों को अधिक तुल्यकालिक रूप से संभाला जा सकता है।
- जावास्क्रिप्ट एसिंक्रोनस कोड निष्पादन को कैसे प्रबंधित करता है?
- जावास्क्रिप्ट का उपयोग करता है event loop अतुल्यकालिक कार्यों को संभालने के लिए, एकल-थ्रेडेड वातावरण में भी गैर-अवरुद्ध कोड निष्पादन की अनुमति देता है।
- अनुक्रमिक और समवर्ती एसिंक निष्पादन के बीच क्या अंतर है?
- क्रमिक निष्पादन में, प्रत्येक await फ़ंक्शन को रोक देता है, जबकि समवर्ती निष्पादन में, सभी वादे एक साथ चलते हैं, जिससे प्रतीक्षा समय कम हो जाता है।
- Async/प्रतीक्षा में त्रुटि प्रबंधन कैसे कार्य करता है?
- साथ try...catch, एसिंक्रोनस फ़ंक्शंस में त्रुटियों को पकड़ा और नियंत्रित किया जाता है, जिससे प्रोग्राम को क्रैश होने से रोका जा सकता है।
जावास्क्रिप्ट में एसिंक्रोनस निष्पादन को समाप्त करना
जावास्क्रिप्ट में एसिंक/प्रतीक्षा कार्यक्षमता एसिंक्रोनस संचालन को संभालने का एक शक्तिशाली तरीका है, जो कोड को अधिक पठनीय और कुशल बनाती है। दिए गए उदाहरणों में, का उपयोग इंतजार उचित अनुक्रम प्रबंधन सुनिश्चित करता है, पहला उदाहरण क्रमिक रूप से वादों को चलाता है और दूसरा उन्हें समवर्ती रूप से निष्पादित करता है।
वादे कैसे हल होते हैं, इसके महत्व को पहचानकर, डेवलपर्स अनावश्यक देरी से बच सकते हैं और अपने एप्लिकेशन के प्रदर्शन को बढ़ा सकते हैं। चाहे एपीआई या जटिल अतुल्यकालिक कार्यों से निपटना हो, इन सुविधाओं का लाभ उठाने से कार्यक्षमता और कोड स्पष्टता दोनों में महत्वपूर्ण सुधार हो सकते हैं।
सन्दर्भ और बाहरी स्रोत
- इस लेख में अधिकारी की जानकारी का उपयोग किया गया है एमडीएन वेब डॉक्स एसिंक/प्रतीक्षा पर , जो जावास्क्रिप्ट में एसिंक्रोनस प्रोग्रामिंग पर एक व्यापक मार्गदर्शिका प्रदान करता है।
- जावास्क्रिप्ट साक्षात्कार मूल्यांकन पर अधिक जानकारी के लिए, एडाफेस जावास्क्रिप्ट ऑनलाइन टेस्ट साक्षात्कारों में उपयोग किए जाने वाले तकनीकी परीक्षणों के वास्तविक दुनिया के उदाहरण प्रदान करते हुए परामर्श दिया गया।