DanLevy.net

Promises का परिचय

JavaScript Promises मज़ेदार हैं!

Hero image for 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)) //=> 20

Promises बनाना #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 उपयोगिता विधियाँ