Promises का परिचय
JavaScript Promises मज़ेदार हैं!
Promises… इनका काम क्या है?
जब भी आप कोई कंप्यूटर कोड निष्पादित करते हैं, तो परिणाम केवल दो ही हो सकते हैं: सफलता या विफलता।
यदि कोड असिंक्रोनस (async) है, तो उस आउटपुट पर भरोसा करना और अधिक जटिल हो जाता है।
Promises इस व्यवस्था को संभालने का एक सीधा और व्यावहारिक तरीका प्रदान करते हैं।
+--Promise---+ | | | <-either-> | | | <-------+ +--------> |Failure? Success?| | | v v (Rejected) (Resolved)साइड नोट: Promises को resolve या reject होना चाहिए, लेकिन कभी-कभी वे दोनों में से कोई भी नहीं करते। इससे ऐप्स हैंंग (hang) हो जाते हैं और डिबग करना काफी मुश्किल होता है।
Promises कहाँ से आते हैं?
कई बार आपको स्वयं Promise बनाने की आवश्यकता नहीं पड़ती। fetch जैसे नेटिव APIs और axios जैसे लोकप्रिय लाइब्रेरी पहले से ही Promises लौटाती हैं।
फिर भी, यदि आपको Promise बनाना ही है, तो इसके दो तरीके हैं:
Promises बनाना #1/2:
Promise बनाने का सबसे सीधा तरीका हेल्पर मेथड Promise.resolve() है।
आप Promise.resolve(value) का उपयोग करके किसी भी मान को Promise में लपेट (या “कन्वर्ट”) सकते हैं।
// Without Promises:function add10(num) { return num + 10}
// With Promises:function add10Promised(num) { return Promise.resolve(num + 10)}
console.log(add10(10)) //=> 20
add10Promised(10) .then(x => console.log(x)) //=> 20Promises बनाना #2/2:
एक और अधिक लचीला विकल्प: Promise कन्स्ट्रक्टर का उपयोग करें।
new Promise(callback) निम्नलिखित इंटरफ़ेस वाला एक callback फ़ंक्शन स्वीकार करता है:
new Promise(function(resolve, reject) { // The arguments `resolve` and `reject` are both functions. // typeof resolve === 'function' // typeof reject === 'function'
// `resolve(result)` must get executed when the promise is fulfilled // `reject(Error)` must get executed if the promise is rejected})Promises API
Promises API में वास्तव में बहुत कम विधियाँ हैं।
2 इंस्टेंस विधियाँ, और 4 स्टैटिक/यूटिलिटी विधियाँ।
Promise इंस्टेंस विधियाँ
Promise से मान निकालने के लिए सामान्य ट्रिक्स (जैसे console.log(promise)) काम नहीं करतीं।
हर Promise या तो सफलता (.then(fn) के जरिए) लौटाता है या विफलता (.catch(fn) के जरिए)।
Promise उपयोगिता विधियाँ
Promise.resolve(value)- किसी भी मान को Promise में बदलता हैPromise.reject(Error)- एक विफल Promise मान बनाता है, जो अगले.catch()को ट्रिगर करता हैPromise.all([...promises])- Promise सरणी के सभी तत्वों के पूरा होने का प्रतीक्षा करता हैPromise.race([...promises])- जैसे ही पहला Promise resolve होता है, यह तुरंत resolve हो जाता है