"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में वादों और वादों की शृंखला को समझना

जावास्क्रिप्ट में वादों और वादों की शृंखला को समझना

2024-11-05 को प्रकाशित
ब्राउज़ करें:780

Understanding Promises and Promise Chaining in JavaScript

एक वादा क्या है?

जावास्क्रिप्ट में एक वादा एक "वादे" की तरह है जो आप भविष्य में कुछ करने के लिए करते हैं। यह एक ऐसी वस्तु है जो एक अतुल्यकालिक कार्य के अंतिम समापन (या विफलता) और उसके परिणामी मूल्य का प्रतिनिधित्व करती है। सीधे शब्दों में कहें तो, एक वादा उस मूल्य के लिए प्लेसहोल्डर के रूप में कार्य करता है जो अभी तक उपलब्ध नहीं है लेकिन भविष्य में होगा।

वादा राज्य

वादे तीन राज्यों में से एक में मौजूद हो सकते हैं:

  1. लंबित: एक वादे की प्रारंभिक स्थिति, जहां यह अभी भी एसिंक कार्य पूरा होने की प्रतीक्षा कर रहा है।
  2. पूर्ण: वह स्थिति जहां वादा सफलतापूर्वक पूरा होता है, और परिणामी मूल्य उपलब्ध होता है।
  3. अस्वीकृत: वह स्थिति जहां वादा विफल हो जाता है, और अपेक्षित मूल्य के बजाय एक त्रुटि लौटा दी जाती है।

एक वादा कैसे काम करता है?

प्रोमिस कंस्ट्रक्टर का उपयोग करके एक प्रॉमिस बनाया जाता है, जो दो पैरामीटर लेता है: रिज़ॉल्व और रिजेक्ट-दोनों फ़ंक्शन हैं।

यदि एसिंक ऑपरेशन सफल होता है, तो आप वादे को पूरा करने के लिए रिज़ॉल्व फ़ंक्शन को कॉल करते हैं।
यदि कुछ गलत होता है, तो आप यह इंगित करने के लिए अस्वीकार फ़ंक्शन को कॉल करते हैं कि वादा किसी त्रुटि के कारण अस्वीकार कर दिया गया था।
आप सफलता के लिए .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
  });

वादों के मुख्य लाभ

  • कॉलबैक हेल से बचा जाता है: वादे कई एसिंक ऑपरेशंस को प्रबंधित करना आसान बनाते हैं, जो अन्यथा गहरे नेस्टेड कॉलबैक (जिसे कॉलबैक हेल के रूप में भी जाना जाता है) की ओर ले जाता है।
  • त्रुटि प्रबंधन: आप अंत में एक .catch() के साथ श्रृंखला में सभी त्रुटियों को संभाल सकते हैं।
  • अनुक्रमिक निष्पादन: प्रॉमिस चेनिंग यह सुनिश्चित करती है कि अतुल्यकालिक कार्यों को क्रम में निष्पादित किया जाता है, जिससे कोड के बारे में तर्क करना आसान हो जाता है।

निष्कर्ष

अतुल्यकालिक कार्यों को संभालने के लिए वादे जावास्क्रिप्ट में एक शक्तिशाली उपकरण हैं। प्रॉमिस चेनिंग के साथ, आप कई एसिंक ऑपरेशंस को साफ, पठनीय और अनुक्रमिक तरीके से प्रबंधित कर सकते हैं। वादों को बनाने और उपभोग करने के तरीके को समझकर, और उन्हें एक साथ जोड़कर, आप जावास्क्रिप्ट में एसिंक्रोनस प्रोग्रामिंग में महारत हासिल करने की राह पर होंगे!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/nurmuhammadd/understandard-promises-and-promise-chaning-in-javascript-gkf?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3