Promise All in Javascript Hindi
promise.all promise object का एक method है | ये भी एक object की तरह काम करता है |
जब javascript code में एक जैसी एक से अधिक promises होतें हैं तो सबके लिए अलग अलग code लिखने की वजाए promise.all method के जरिये उसे handle कर सकतें हैं | यानी सारे promises के लिए एक consuming code बना सकतें हैं |
promise.all() में ली गयी promises जब सारे resolved हो जातें हैं, तब जाके then() function call होता है |
और अगर एक भी promise reject हुआ, तब catch() function call होता है |
promise.all() का Syntax:
promise.all(iterable); //iterable array of promises को represent करता है
Sample Example
let promise1 = new Promise(function(resolve,reject){ console.log("call first promise"); resolve("1st promise called"); }); let promise2 = new Promise(function(resolve,reject){ console.log("call second promise"); resolve("2nd promise called"); }); promise.all([promise1, promise2]).then().catch();
उदाहरण
<!DOCTYPE html> <html> <head> <title>javascript promise all example</title> </head> <body> <script> let promise1 = new Promise((resolve, reject)=>{ setTimeout(()=>{ console.log("first promise get resolved"); resolve("value1"); },1*1000) }); let promise2 = new Promise((resolve, reject)=>{ setTimeout(()=>{ console.log("second promise get resolved"); resolve("value2"); },2*1000) }); Promise.all([promise1,promise2]).then((result)=>{ console.log(`get result: ${result}`); }).catch((error)=>{ console.log(`error is: ${error}`); }); </script> </body> </html>
output
उदाहरण में हमने promise.all() method में दो promises pass कीया है, दोनों promises resolve हुए हैं | इसीलिए success message आया है |
अगर कोई एक promise reject हो जाता तो reject block execute होता |
उदाहरण
<!DOCTYPE html> <html> <head> <title>javascript promise object methods </title> </head> <body> <script> let promise1 = new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve("value1"); },1*1000) }); let promise2 = new Promise((resolve, reject)=>{ setTimeout(()=>{ reject(new Error("error")); },2*1000) }); let promise3 = new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve("value3"); },3*1000) }); let prmall = Promise.all([promise1,promise2,promise3]) .then((value)=>{console.log(value)}) .catch((error)=>{console.log(error)}) </script> </body> </html>
उदाहरण में देखिये हमने 3 promises लिया है और इसमें 2nd promise reject हो गया है | अन्य 2 promises resolve हुए पर promise.all सिर्फ error message return करेगा |
output
promise.all में pass किये गए सभी promises जब resolve हो जातें तभी ये सबके result को एक array बना कर return करता है |
और अगर एक भी promise reject हुआ तब ये सिर्फ उस promise का error return करता है | पर बाकी resolved हुए promises का result नहीं बताता है |
promise object के अन्य methods
promise.all की तरह promise object के अन्य methods भी हैं जिसे हम आगे जानेगें |
promise.allSettled
promise.allSettled भी promise object का एक method है | promise.all method की तरह इसमें भी एक से अधिक promises को एक array की तरह pass कर सकतें हैं |
promise.all() method में जब एक भी promise reject हो जाता है तब वो सिर्फ error return करता है और बाकि resolved promises का output नहीं बताता है |
पर promise.allSettled() method सारे promises का result बताता है चाहे उसमे से कुछ promise reject हुआ हो या कुछ promise resolve हुआ हो |
promise.allSettled() method सारे promises settled होने तक wait करता है और सभी का detail result एक array object के जरिये return करता है |
उदाहरण
<!DOCTYPE html> <html> <head> <title>javascript promise object methods </title> </head> <body> <script> let promise1 = new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve("value1"); },1*1000) }); let promise2 = new Promise((resolve, reject)=>{ setTimeout(()=>{ reject(new Error("error")); },2*1000) }); let promise3 = new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve("value3"); },3*1000) }); let prmall = Promise.allSettled([promise1,promise2,promise3]) .then((value)=>{console.log(value)}) .catch((error)=>{console.log(error)}) </script> </body> </html>
output
उदाहरण में देखिये 3 promises में से एक reject हुआ है और 2 resolve हुआ है | promise.allSettled() method सभी के result, status के साथ array object के जरिये return किया है |
promise.race
promise.race सारे promises complete होने का wait नहीं करता है | जैसे ही कोई भी promise complete होता है, तब ये execute होता है और उस एक promise का सिर्फ output return करता है |
जो भी promise चाहे वो resolve हुआ हो या reject हुआ हो पर पहले complete हुआ है, तो उसीका result promise.race() method return करता है |
promise.any
promise.any भी promise.race की तरह काम करता है | ये भी उस promise का wait करता है जो पहले complete हुआ हो |
पर वो देखता है की वो promise resolve हुआ है या नहीं | वो उसी पहले promise का result बताता है जो resolve हुआ हो |
promise.any में pass किये गए सभी promises अगर reject हो जाये, तो ये promise.any() method एक aggregate error throw करता है |