जावास्क्रिप्ट में एक वादा एक "वादे" की तरह है जो आप भविष्य में कुछ करने के लिए करते हैं। यह एक ऐसी वस्तु है जो एक अतुल्यकालिक कार्य के अंतिम समापन (या विफलता) और उसके परिणामी मूल्य का प्रतिनिधित्व करती है। सीधे शब्दों में कहें तो, एक वादा उस मूल्य के लिए प्लेसहोल्डर के रूप में कार्य करता है जो अभी तक उपलब्ध नहीं है लेकिन भविष्य में होगा।
वादे तीन राज्यों में से एक में मौजूद हो सकते हैं:
प्रोमिस कंस्ट्रक्टर का उपयोग करके एक प्रॉमिस बनाया जाता है, जो दो पैरामीटर लेता है: रिज़ॉल्व और रिजेक्ट-दोनों फ़ंक्शन हैं।
यदि एसिंक ऑपरेशन सफल होता है, तो आप वादे को पूरा करने के लिए रिज़ॉल्व फ़ंक्शन को कॉल करते हैं।
यदि कुछ गलत होता है, तो आप यह इंगित करने के लिए अस्वीकार फ़ंक्शन को कॉल करते हैं कि वादा किसी त्रुटि के कारण अस्वीकार कर दिया गया था।
आप सफलता के लिए .then() और त्रुटि प्रबंधन के लिए .catch() का उपयोग करके किसी वादे के परिणाम को संभाल सकते हैं।
उदाहरण: एक वादा बनाना और पूरा करना
const fetchData = new Promise((resolve, reject) => { // Simulate an asynchronous task like fetching data from a server setTimeout(() => { const data = "Some data from the server"; // Simulate success and resolve the promise resolve(data); // You can also simulate an error by rejecting the promise // reject(new Error("Failed to fetch data")); }, 1000); }); // Consuming the Promise fetchData .then((data) => { console.log("Data fetched:", data); }) .catch((error) => { console.error("Error fetching data:", error); });
वादा पूरा होने पर संकल्प(डेटा) सफल डेटा लौटाएगा।
यदि कुछ गलत होता है, तो अस्वीकार (त्रुटि) एक त्रुटि फेंक देगा जिसे .catch() से नियंत्रित किया जा सकता है।
प्रॉमिस चेनिंग, प्रॉमिस का उपयोग करके, एक के बाद एक अतुल्यकालिक कार्यों के अनुक्रम को निष्पादित करने की प्रक्रिया है। श्रृंखला में प्रत्येक .then() विधि पिछली विधि के पूरा होने के बाद चलती है।
यह आपको एक विशिष्ट क्रम में कई अतुल्यकालिक संचालन को संभालने के लिए साफ, पढ़ने योग्य कोड लिखने की अनुमति देता है। प्रत्येक .then() एक मान लौटा सकता है जो श्रृंखला में अगले .then() को दिया जाता है, जिससे आप चरण-दर-चरण कार्यों को संभाल सकते हैं।
उदाहरण: अनेक वादों की श्रृंखला बनाना
new Promise((resolve, reject) => { setTimeout(() => resolve(1), 1000); // Initial async task resolves with 1 }) .then((result) => { console.log(result); // Logs: 1 return result * 2; // Returns 2 to the next .then() }) .then((result) => { console.log(result); // Logs: 2 return result * 3; // Returns 6 to the next .then() }) .then((result) => { console.log(result); // Logs: 6 return result * 4; // Returns 24 to the next .then() });
इस उदाहरण में:
वादा 1 सेकंड के बाद 1 से हल करके शुरू होता है।
प्रत्येक अगला .then() पिछले वाले से परिणाम प्राप्त करता है, इसे दोगुना या तिगुना करता है, और इसे अगले .then() को भेजता है।
परिणाम चरण-दर-चरण लॉग किया गया है: 1, 2, 6।
चेनिंग में त्रुटि प्रबंधन
आप .catch() का उपयोग करके प्रॉमिस श्रृंखला में किसी भी त्रुटि को पकड़ सकते हैं। यदि कोई .then() विफल हो जाता है, तो श्रृंखला रुक जाती है, और त्रुटि .catch() ब्लॉक में चली जाती है।
new Promise((resolve, reject) => { setTimeout(() => resolve(1), 1000); }) .then((result) => { console.log(result); // Logs: 1 return result * 2; }) .then((result) => { throw new Error("Oops, something went wrong!"); }) .catch((error) => { console.error("Caught error:", error.message); // Catches the error });
अतुल्यकालिक कार्यों को संभालने के लिए वादे जावास्क्रिप्ट में एक शक्तिशाली उपकरण हैं। प्रॉमिस चेनिंग के साथ, आप कई एसिंक ऑपरेशंस को साफ, पठनीय और अनुक्रमिक तरीके से प्रबंधित कर सकते हैं। वादों को बनाने और उपभोग करने के तरीके को समझकर, और उन्हें एक साथ जोड़कर, आप जावास्क्रिप्ट में एसिंक्रोनस प्रोग्रामिंग में महारत हासिल करने की राह पर होंगे!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3