JavaScript में प्रॉमिस arrays के साथ काम करना
अब हम दो उपयोगी विधियों का विश्लेषण करेंगे,
जो प्रॉमिस arrays के साथ काम करने की अनुमति देती हैं।
विधि Promise.all उसे array के रूप में पारित किए गए
सभी प्रॉमिसों के समाप्त होने पर कोड निष्पादित करने की अनुमति देती है,
और विधि Promise.race
array से पहले प्रॉमिस के लोड होने की प्रतीक्षा करती है,
शेष को छोड़ देती है।
दोनों विधियाँ अपने परिणाम के रूप में एक नया
प्रॉमिस लौटाती हैं। विधि Promise.all के लिए इस
प्रॉमिस का परिणाम सभी पारित प्रॉमिसों के परिणामों की एक array होगी
(परिणामों का क्रम array में प्रॉमिसों के क्रम के अनुरूप होता है),
जबकि Promise.race के लिए - पहले
कार्यान्वित प्रॉमिस का परिणाम।
आइए व्यवहार में देखें। मान लीजिए कि हमारे पास एक प्रॉमिस array है:
let promises = [
new Promise(resolve => setTimeout(() => resolve(1), 1000)),
new Promise(resolve => setTimeout(() => resolve(2), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 3000)),
];
आइए Promise.all का उपयोग करके
हमारी array से सभी प्रॉमिसों के लोड होने का
इंतजार करें:
Promise.all(promises).then(function(res) {
console.log(res); // [1, 2, 3] - सभी प्रॉमिसों के परिणाम output करेगा
});
और अब Promise.race का उपयोग करके
प्रॉमिसों में से पहले के लोड होने का
इंतजार करें:
Promise.race(promises).then(function(res) {
console.log(res); // 1 - पहले कार्यान्वित प्रॉमिस का परिणाम output करेगा
});
यदि array में कोई एक प्रॉमिस भी
अस्वीकार कर दिया जाता है, तो परिणाम वाला प्रॉमिस तुरंत
rejected स्थिति में चला जाएगा। इसलिए
उत्पन्न अपवाद को सामान्य तरीके से पकड़ा जा सकता है,
जैसा कि आपने पहले ही सीख लिया है, उदाहरण के लिए,
catch के माध्यम से:
Promise.all(promises).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
एक फ़ंक्शन बनाएं जो एक प्रॉमिस लौटाता है, जिसके अंदर
1 से 10 सेकंड तक का एक यादृच्छिक विलंब सेट है।
प्रॉमिस अपने परिणाम के रूप में इस विलंब को लौटाता है।
लूप और आपके फ़ंक्शन का उपयोग करके array को
10 प्रॉमिसों से भरें।
पिछले कार्य की प्रॉमिस array का उपयोग करके ऐसा करें कि कंसोल में पहले कार्यान्वित प्रॉमिस का परिणाम output हो जाए।
पिछले कार्य की प्रॉमिस array का उपयोग करके ऐसा करें कि कंसोल में सभी प्रॉमिसों के परिणामों का योग output हो जाए।