एसिंक्रोनस प्रोग्रामिंग जावास्क्रिप्ट का एक प्रमुख पहलू है जो डेवलपर्स को मुख्य थ्रेड को अवरुद्ध किए बिना लंबे नेटवर्क अनुरोध, फ़ाइल संचालन और अन्य समय लेने वाले कार्यों को करने की अनुमति देता है। यह सुनिश्चित करता है कि एप्लिकेशन उत्तरदायी और उपयोगकर्ता के अनुकूल बने रहें। जावास्क्रिप्ट एसिंक्रोनस ऑपरेशंस को संभालने के लिए तीन मुख्य तरीके प्रदान करता है: कॉलबैक, वादे और एसिंक/प्रतीक्षा। इस लेख में, हम विस्तृत उदाहरणों के माध्यम से इनमें से प्रत्येक विधि पर गहराई से विचार करेंगे, उनके वाक्यविन्यास, उपयोग और अंतर की खोज करेंगे।
जावास्क्रिप्ट में, जिन कार्यों को पूरा होने में समय लगता है, जैसे सर्वर से डेटा लाना, फ़ाइलें पढ़ना, या गणना करना, उन्हें अतुल्यकालिक रूप से नियंत्रित किया जा सकता है। इसका मतलब यह है कि किसी ऑपरेशन के पूरा होने की प्रतीक्षा करते समय, जावास्क्रिप्ट इंजन अन्य कार्यों को निष्पादित करना जारी रख सकता है। वेब अनुप्रयोगों में कुशल और सहज उपयोगकर्ता अनुभव बनाने के लिए यह महत्वपूर्ण है।
कॉलबैक जावास्क्रिप्ट में अतुल्यकालिक संचालन को संभालने के शुरुआती तरीकों में से एक है। कॉलबैक बस एक फ़ंक्शन है जो किसी अन्य फ़ंक्शन के तर्क के रूप में पारित किया जाता है, जिसे एसिंक्रोनस ऑपरेशन पूरा होने के बाद निष्पादित किया जाएगा।
function fetchData(callback) { setTimeout(() => { callback("Data fetched!"); }, 1000); } function displayData(data) { console.log(data); } fetchData(displayData);
उपरोक्त उदाहरण में, फ़ेचडेटा सेटटाइमआउट का उपयोग करके एक अतुल्यकालिक ऑपरेशन का अनुकरण करता है। 1 सेकंड के बाद, यह डिस्प्लेडेटा फ़ंक्शन को कॉल करता है, प्राप्त डेटा को एक तर्क के रूप में पास करता है।
फायदे:
नुकसान:
कॉलबैक से जुड़े मुद्दों के समाधान के लिए ईएस6 (ईसीएमएस्क्रिप्ट 2015) में वादे पेश किए गए थे। एक वादा एक ऐसे ऑपरेशन का प्रतिनिधित्व करता है जो अभी तक पूरा नहीं हुआ है लेकिन भविष्य में अपेक्षित है। यह तीन स्थितियों में से एक में हो सकता है: लंबित, पूर्ण या अस्वीकृत।
function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve("Data fetched!"); }, 1000); }); } fetchData() .then(data => { console.log(data); }) .catch(error => { console.error("Error:", error); });
इस उदाहरण में, FetchData एक वादा लौटाता है जो "डेटा प्राप्त किया गया!" के साथ हल होता है। 1 सेकंड के बाद. तत्कालीन विधि का उपयोग हल किए गए मान को संभालने के लिए किया जाता है, और कैच का उपयोग किसी भी त्रुटि को संभालने के लिए किया जाता है।
वादों को अनुक्रम में अतुल्यकालिक संचालन की एक श्रृंखला निष्पादित करने के लिए जंजीर में बांधा जा सकता है।
function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve("Data fetched!"); }, 1000); }); } function processData(data) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(`${data} Processed!`); }, 1000); }); } fetchData() .then(data => { console.log(data); return processData(data); }) .then(processedData => { console.log(processedData); }) .catch(error => { console.error("Error:", error); });
इस उदाहरण में, प्रोसेसडेटा को फ़ेचडेटा के बाद कॉल किया जाता है, और परिणाम को तब का उपयोग करके अनुक्रम में प्रबंधित किया जाता है।
फायदे:
नुकसान:
ES2017 में पेश किया गया Async/Await, प्रॉमिस का उपयोग करके एसिंक्रोनस कोड लिखने का अधिक पठनीय और संक्षिप्त तरीका प्रदान करता है। async कीवर्ड का उपयोग एसिंक्रोनस फ़ंक्शन को परिभाषित करने के लिए किया जाता है, और wait कीवर्ड का उपयोग किसी वादे के हल होने तक निष्पादन को रोकने के लिए किया जाता है।
async function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve("Data fetched!"); }, 1000); }); } async function displayData() { const data = await fetchData(); console.log(data); } displayData();
इस उदाहरण में, डिस्प्लेडेटा एक एसिंक्रोनस फ़ंक्शन है जो डेटा लॉग करने से पहले फ़ेचडेटा के पूरा होने की प्रतीक्षा करता है।
Async/Await के साथ त्रुटि प्रबंधन ट्राई/कैच ब्लॉक का उपयोग करके किया जा सकता है।
async function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { reject("Failed to fetch data!"); }, 1000); }); } async function displayData() { try { const data = await fetchData(); console.log(data); } catch (error) { console.error("Error:", error); } } displayData();
यहां, यदि फ़ेचडेटा विफल हो जाता है, तो त्रुटि पकड़ी जाती है और कैच ब्लॉक द्वारा लॉग किया जाता है।
फायदे:
नुकसान:
उत्तरदायी और कुशल अनुप्रयोगों के निर्माण के लिए जावास्क्रिप्ट में अतुल्यकालिक प्रोग्रामिंग आवश्यक है। कॉलबैक, प्रॉमिस और Async/Await के बीच अंतर को समझने से डेवलपर्स को अपने विशिष्ट उपयोग के मामले के लिए सही टूल चुनने की अनुमति मिलती है। जबकि कॉलबैक एसिंक्रोनस ऑपरेशंस को संभालने का सबसे सरल रूप है, वे गड़बड़ कोड का कारण बन सकते हैं। वादे अधिक संरचित दृष्टिकोण प्रदान करते हैं, लेकिन Async/Await सबसे सुंदर और पठनीय समाधान प्रदान करता है। सर्वोत्तम प्रथाओं का पालन करके और इन उपकरणों को समझकर, डेवलपर्स स्वच्छ, रखरखाव योग्य और कुशल अतुल्यकालिक कोड लिख सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3