मॉड्यूल पाठ (1/4)
वादे: वे क्या हैं
वादा एक मान है जो एक ऑपरेशन के परिणाम का प्रतिनिधित्व करता है जो भविष्य में समाप्त होगा। यह तीन अवस्थाओं में से एक में हो सकता है:
- लंबित - कार्रवाई अभी भी जारी है
- पूर्ण - यह सफलतापूर्वक समाप्त हुआ, इसका एक मूल्य है
- अस्वीकृत - यह विफल रहा, एक त्रुटि है
एक बार जब यह लंबित स्थिति को छोड़ देता है, तो यह हमेशा के लिए "निपटान" हो जाता है।
एक संकल्पित वादा बनाना
दो सबसे आम तरीके - आप लगभग कभी भी कंस्ट्रक्टर के साथ "हाथ से" कोई वादा नहीं बनाएंगे:
const p1 = Promise.resolve(42);
const p2 = Promise.reject(new Error('oops'));परिणाम पढ़ना: .then / .catch
Promise.resolve(10).then((v) => {
console.log(v); // 10
});
Promise.reject(new Error('no')).catch((e) => {
console.log(e.message); // 'no'
});.then को एक फ़ंक्शन प्राप्त होता है जिसे समाधानित मान के साथ कॉल किया जाता है।
.catch को अस्वीकृति की स्थिति में त्रुटि के साथ एक फ़ंक्शन प्राप्त होता है।
चेनिंग
प्रत्येक .then बदले में एक वादा लौटाता है: आप उन्हें रूपांतरित करने के लिए श्रृंखलाबद्ध कर सकते हैं
मूल्य चरण दर चरण.
Promise.resolve(5)
.then((n) => n * 2)
.then((n) => n + 1)
.then((n) => console.log(n)); // 11यदि .then में से कोई भी विफल हो जाता है (या कोई वादा लौटाता है), तो निष्पादन
पहले बाद वाले .catch पर चला जाता है।
कंस्ट्रक्टर (दुर्लभ)
const p = new Promise((resolve, reject) => {
if (Math.random() > 0.5) resolve('ok');
else reject(new Error('no'));
});आप इसका उपयोग केवल तभी करेंगे जब आपको कॉलबैक का उपयोग करने वाली किसी चीज़ का "वादा" करने की आवश्यकता होगी (उदाहरण के लिए पुराने DOM एपीआई या सेटटाइमआउट)।
इसे अजमाएं
`promisedVersion(n)` को परिभाषित करें, जो एक संख्या दिए जाने पर, n के दोगुने के साथ हल किया गया एक वादा लौटाता है।
संकेत दिखाएँ
वापसी का वादा.संकल्प(n * 2)
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
`incrementThree(p)` को परिभाषित करें जो एक संख्या का वादा प्राप्त करता है और संख्या + 3 का एक वादा लौटाता है। एक .then श्रृंखला का उपयोग करें।
संकेत दिखाएँ
पी.तब((एन) => एन + 3)
3 प्रयासों के बाद समाधान उपलब्ध है