मान लीजिए हमारे पास दो एलिमेंट्स का एक ऐरे है, जिनके दोनों एलिमेंट्स दो एसिंक्रोनस फंक्शन हैं। हमें कुछ काम करना है, जैसे कंसोल पर कुछ प्रिंट करना (इस सवाल के लिए), जब दोनों एसिंक्रोनस फंक्शन का एक्जीक्यूशन पूरा हो जाए।
इस चुनौती को कैसे हल कर सकते हैं?
किसी एसिंक्रोनस टास्क के पूरा होने पर कोई टास्क करने के मूल रूप से दो तरीके हैं:
- प्रॉमिस (Promises) का उपयोग करके
- async/await फंक्शन का उपयोग करके
लेकिन जब कोड में एक से अधिक एसिंक्रोनस फंक्शन को संभालना हो, तो पहले तरीके का Promise.all फंक्शन, दूसरे तरीके पर बढ़त रखता है।
उदाहरण
निम्नलिखित कोड है:
const arr = [
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('func1 fired!');
}, 2000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('func2 fired');
}, 3000);
})
];
const lastFunction = () => {
console.log('this function should be fired at the very last');
};
Promise.all([arr[0], arr[1]]).then((resp) => {
console.log(resp);
lastFunction();
}).catch((err) => {
console.log('something unexpected happened');
})
आउटपुट
यह कंसोल में निम्नलिखित आउटपुट देगा:
[ 'func1 fired!', 'func2 fired' ] this function should be fired at the very last