logo

JavaScript Promise all() metóda

The Metóda Promise.all(). je vlastne metóda objektu Promise (čo je tiež objekt pod JavaScriptom používaným na spracovanie všetkých asynchrónnych operácií), ktorý berie ako vstup pole prísľubov (opakovateľné). Vracia singl Sľub ktorý sa vyrieši, keď všetky sľuby prešli ako opakovateľné, ktoré sa vyriešili, alebo keď opakovateľný obsah neobsahuje žiadne sľuby. Jednoduchým spôsobom, ak niektorý z odovzdaných sľubov odmietne, Promise.all() metóda asynchrónne odmieta hodnotu prísľubu, ktorý už bol odmietnutý, bez ohľadu na to, či ostatné prísľuby boli alebo neboli vyriešené.

Syntax:



Promise.all( iterable )>

Parametre: Táto metóda akceptuje jeden parameter iterovateľné ktorý zaberá pole sľuby alebo normálne pole, ktoré obsahuje nejaké objekty.

Návratové hodnoty: Na vrátenie jedného prísľubu sa riadi niekoľkými pravidlami:

  • Ak je odovzdaný argument prázdny, vráti prísľub, ktorý už je vyriešené .
  • Ak odovzdaná iterácia neobsahuje žiadne sľuby, vráti prísľub, ktorý je vyriešený asynchrónne .
  • Vo všetkých ostatných prípadoch vráti čakajúci prísľub.

Metóda plnenia a odmietnutia Promise.all():



Splnenie: Vrátený sľub je splnený,

  • Ak je odovzdaná iterovateľná položka prázdna, potom táto metóda synchrónne vráti prísľub, ktorý je už vyriešený.
  • Ak sú splnené všetky odovzdané sľuby, vrátené sľuby sa plnia asynchrónne.
  • Tu úspešné vykonanie tejto konkrétnej metódy úplne závisí od všetkých sľubov, že budú úspešne vykonané.

odmietnutie: Ak je niektorý z odovzdaných sľubov odmietnutý, potom táto metóda odmietne hodnotu tohto sľubu, či už boli ostatné sľuby vyriešené alebo nie. Inými slovami, ak sa niektorý sľub nepodarí splniť, metóda Promise.all() vráti chybu a nebude brať do úvahy, či sú ostatné sľuby úspešne splnené alebo nie.

Nasledujúce príklady ilustrujú metódu JavaScript Promise.all():



Príklad 1: Metóda Promise.all() čaká plnenie

javascript

2 až 1 multiplexer




p1 = Promise.resolve(50);> p2 = 200> p3 =>new> Promise(>function> (resolve, reject) {> >setTimeout(resolve, 100,>'geek'>);> });> Promise.all([p1, p2, p3]).then(>function> (values) {> >console.log(values);> });>

>

genericita v jazyku Java

>

Výkon

[ 50, 200, 'geek' ]>

Príklad 2: Tu sa metóda Promise.all() vyrieši po 2000 ms a výstup sa zobrazí ako pole.

javascript




// Simple promise that resolves> // after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Resolving a normal promise> tOut(1000).then(result =>console.log(výsledok +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>console.log(výsledok))>

>

>

Výkon:

Completed in 1000 Completed in 1000, Completed in 2000>

Tu, Promise.all() metóda je poradie dodržaných sľubov. Prvý prísľub v poli sa rozdelí na prvý prvok výstupného poľa, druhý prísľub bude druhý prvok vo výstupnom poli, a tak ďalej.

Príklad 3: Tu je , a Promise.all() metóda čaká, kým sa všetky sľuby nevyriešia.

javascript




odstráňte vyrovnávaciu pamäť npm
// Simple promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Array contains some time duration> const durations = [1000, 2000, 3000]> const promises = []>// Empty array> durations.map((duration) =>{> >// Calling the async function timeout(), so> >// at this point the async function has started> >// and enters the 'pending' state> >// pushing the pending promise to an array.> >promises.push(tOut(duration))> })> console.log(promises)> // Passing an array of pending promises to Promise.all> // Promise.all will wait till all the promises get resolves> // and then the same gets resolved.> Promise.all(promises).then(response =>console.log(response))> // It prints after previous promises gets resolved> // ['Completed in 1000', 'Completed in 2000', 'Completed in 3000']>

>

>

Výkon :

[object Promise], [object Promise], [object Promise] . . . (gap between previous and last promises) . . Completed in 1000, Completed in 2000, Completed in 3000>

Príklad 4: Ako je znázornené v tomto príklade, ak jeden zo sľubov zlyhá, zlyhajú aj všetky ostatné prísľuby a výsledok sa zobrazí v konzole vo forme chyby. Potom Promise.all() metóda je zamietnutá.

javascript




// Promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >if> (t === 2000) {> >reject(`Rejected>in> ${t}`)> >}>else> {> >resolve(`Completed>in> ${t}`)> >}> >}, t)> >})> }> const durations = [1000, 2000, 3000]> // Array contains some time durations> const promises = []>//empty array> durations.map((duration) =>{> >promises.push(tOut(duration))> >// Pushing durations in the promises array> })> // Passing an array of pending promises to Promise.all> Promise.all(promises).then(response =>console.log(response))> >// Promise.all cannot be resolved, as one of the> >// promises passed, got rejected.> >.>catch>(error =>console.log(`::Error:: ${error}`))> // Promise.all throws an error.>

>

menu nastavení telefónu s Androidom
>

Výkon :

Error Rejected in 2000>

Príklad-5: V tomto príklade použijeme nejakú funkciu časovača (najmä funkciu setTimeout), ktorá má v sebe rôzne časovače a tie sa zapíšu do rôznych prísľubov a ďalej sa tieto prísľuby prenesú do metód Promise.all(), aby sme získali výsledok.

Javascript




let first_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 1 second'>);> >}, 1000);> });> let second_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 2 seconds'>);> >}, 2000);> });> let third_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 3 seconds'>);> >}, 3000);> });> try> {> >let result = Promise.all([first_promise, second_promise, third_promise]);> >result.then((data) =>console.log(data));> }>catch> (error) {> >console.log(error);> }> // This code is contributed by Aman Singla...>

>

>

pole reťazcov c programovanie

Výkon:

[  'Resolved First after 1 second',  'Resolved First after 2 seconds',  'Resolved First after 3 seconds' ]>

Podporované prehliadače:

Podporované prehliadače JavaScript Promise.all() metódy sú uvedené nižšie:

  • Google Chrome 32 a vyššie
  • Edge 12 a vyššie
  • Firefox 29 a vyššie
  • Opera 19 a vyššie
  • Safari 8 a vyššie
  • Internet Explorer nie je podporovaný