जावास्क्रिप्ट वादा और वादा जंजीर

इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट वादों और वादों के बारे में जानेंगे।

जावास्क्रिप्ट में, एक वादा अतुल्यकालिक संचालन को संभालने का एक अच्छा तरीका है । इसका उपयोग यह पता लगाने के लिए किया जाता है कि एसिंक्रोनस ऑपरेशन सफलतापूर्वक पूरा हुआ है या नहीं।

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

  • लंबित है
  • भरा हुआ
  • अस्वीकृत

एक वाद लंबित स्थिति में शुरू होता है। इसका मतलब है कि प्रक्रिया पूरी नहीं हुई है। यदि ऑपरेशन सफल होता है, तो प्रक्रिया एक पूर्ण स्थिति में समाप्त होती है। और, यदि कोई त्रुटि होती है, तो प्रक्रिया अस्वीकृत स्थिति में समाप्त होती है।

उदाहरण के लिए, जब आप वादे का उपयोग करके सर्वर से डेटा का अनुरोध करते हैं, तो यह लंबित स्थिति में होगा। जब डेटा सफलतापूर्वक आता है, तो यह एक पूर्ण स्थिति में होगा। यदि कोई त्रुटि होती है, तो वह अस्वीकृत स्थिति में होगी।

एक वादा बनाएँ

वादा ऑब्जेक्ट बनाने के लिए, हम Promise()कंस्ट्रक्टर का उपयोग करते हैं ।

 let promise = new Promise(function(resolve, reject)( //do something ));

Promise()निर्माता एक तर्क के रूप में एक समारोह लेता है। फ़ंक्शन भी दो कार्यों को स्वीकार करता है resolve()और reject()

यदि वादा सफलतापूर्वक लौटता है, तो resolve()फ़ंक्शन कहा जाता है। और, यदि कोई त्रुटि होती है, तो reject()फ़ंक्शन को कहा जाता है।

मान लेते हैं कि नीचे का कार्यक्रम एक अतुल्यकालिक कार्यक्रम है। फिर एक वादा का उपयोग करके कार्यक्रम को संभाला जा सकता है।

उदाहरण 1: एक वादा के साथ कार्यक्रम

 const count = true; let countValue = new Promise(function (resolve, reject) ( if (count) ( resolve("There is a count value."); ) else ( reject("There is no count value"); ) )); console.log(countValue);

आउटपुट

 वादा (: "एक गणना मूल्य है।")

उपरोक्त कार्यक्रम में, एक Promiseऑब्जेक्ट बनाया जाता है जो दो फ़ंक्शन लेता है: resolve()और reject()resolve()यदि प्रक्रिया सफल reject()होती है और वादे में त्रुटि होने पर इसका उपयोग किया जाता है।

यदि मूल्य का सही अर्थ है तो वादा हल किया जाता है।

जावास्क्रिप्ट वादा का कार्य करना

जावास्क्रिप्ट वादा चाइनिंग

जब आप एक से अधिक अतुल्यकालिक कार्य को संभालते हैं, तो वादे उपयोगी होते हैं। उसके लिए, हम वादे का उपयोग करते हैं।

विधियों का उपयोग करके एक वादा हल करने के बाद आप एक ऑपरेशन कर सकते हैं then(), catch()और finally()

जावास्क्रिप्ट तब () विधि

then()विधि कॉलबैक के साथ इस्तेमाल किया जब वादा सफलतापूर्वक पूरा या हल हो गई है है।

then()विधि का सिंटैक्स है:

 promiseObject.then(onFulfilled, onRejected);

उदाहरण 2: (तब) के साथ वादा पूरा करना

 // returns a promise let countValue = new Promise(function (resolve, reject) ( resolve('Promise resolved'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) .then( function successValue1() ( console.log('You can call multiple functions this way.'); ), );

आउटपुट

 वादा किया गया समाधान आप इस तरह से कई कार्य कह सकते हैं।

उपरोक्त कार्यक्रम में, then()विधि का उपयोग कार्यों को वादा करने के लिए किया जाता है। then()जब वादा सफलतापूर्वक हल हो गई है विधि कहा जाता है।

आप then()वादे के साथ कई तरीकों की श्रृंखला बना सकते हैं ।

जावास्क्रिप्ट कैच () विधि

catch()विधि कॉलबैक के साथ प्रयोग किया जाता है जब वादा को अस्वीकार कर दिया हो या कोई त्रुटि होती है तो। उदाहरण के लिए,

 // returns a promise let countValue = new Promise(function (resolve, reject) ( reject('Promise rejected'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) // executes if there is an error .catch( function errorValue(result) ( console.log(result); ) );

आउटपुट

 वादा खारिज कर दिया

उपरोक्त कार्यक्रम में, वादा अस्वीकार कर दिया गया है। और catch()त्रुटि को संभालने के वादे के साथ विधि का उपयोग किया जाता है।

जावास्क्रिप्ट वादे का पालन करना

जावास्क्रिप्ट वादा बनाम कॉलबैक

वादे कॉलबैक फ़ंक्शंस के समान हैं, जिनका उपयोग उन दोनों को अतुल्यकालिक कार्यों को संभालने के लिए किया जा सकता है।

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

उनके मतभेदों को निम्नलिखित बिंदुओं में संक्षेपित किया जा सकता है:

जावास्क्रिप्ट वादा

  1. वाक्यविन्यास उपयोगकर्ता के अनुकूल है और पढ़ने में आसान है।
  2. त्रुटि प्रबंधन आसान है।
  3. उदाहरण:
     Api ()। तब (फ़ंक्शन (परिणाम) (वापसी api2 ();))। फिर (फ़ंक्शन (परिणाम 2) (वापसी api3 ();))। तब (फ़ंक्शन (परिणाम 3) (// do work)) पकड़। फ़ंक्शन (त्रुटि) (// इस बिंदु से पहले हो सकने वाली किसी भी त्रुटि को संभालें));

जावास्क्रिप्ट कॉलबैक

  1. वाक्यविन्यास समझना मुश्किल है।
  2. त्रुटि से निपटने में मुश्किल हो सकती है।
  3. उदाहरण:
     api (फंक्शन (परिणाम) (api2 (फंक्शन 2) (api3 (फंक्शन 3 (result3) (// do work if (एरर)) (// do something) (// do something));););); ;

जावास्क्रिप्ट अंत में () विधि

You can also use the finally() method with promises. The finally() method gets executed when the promise is either resolved successfully or rejected. For example,

 // returns a promise let countValue = new Promise(function (resolve, reject) ( // could be resolved or rejected resolve('Promise resolved'); )); // add other blocks of code countValue.finally( function greet() ( console.log('This code is executed.'); ) );

Output

 This code is executed.

JavaScript Promise Methods

There are various methods available to the Promise object.

Method Description
all(iterable) Waits for all promises to be resolved or any one to be rejected
allSettled(iterable) Waits until all promises are either resolved or rejected
any(iterable) Returns the promise value as soon as any one of the promises is fulfilled
race(iterable) Wait until any of the promises is resolved or rejected
reject(reason) Returns a new Promise object that is rejected for the given reason
resolve(value) Returns a new Promise object that is resolved with the given value
catch() Appends the rejection handler callback
then() Appends the resolved handler callback
finally() Appends a handler to the promise

To learn more about promises in detail, visit JavaScript Promises.

दिलचस्प लेख...