logo

JavaScript Promise all()-Methode

Der Promise.all()-Methode ist eigentlich eine Methode des Promise-Objekts (das auch ein Objekt unter JavaScript ist, das zur Verarbeitung aller asynchronen Vorgänge verwendet wird), das ein Array von Versprechen (ein iterierbares Array) als Eingabe akzeptiert. Es wird eine Single zurückgegeben Versprechen Das wird aufgelöst, wenn alle Versprechen, die als Iterable übergeben wurden, aufgelöst wurden, oder wenn das Iterable keine Versprechen enthält. Auf einfache Weise wird bei Ablehnung eines der abgegebenen Versprechen das Promise.all() Die Methode lehnt asynchron den Wert des Versprechens ab, das bereits abgelehnt wurde, unabhängig davon, ob die anderen Versprechen gelöst wurden oder nicht.

Syntax:



Promise.all( iterable )>

Parameter: Diese Methode akzeptiert einen einzelnen Parameter wiederholbar was eine Reihe von benötigt Versprechen oder ein normales Array, das einige Objekte enthält.

Rückgabewerte: Für die Rückgabe eines einzelnen Versprechens gelten einige Regeln:

  • Wenn das übergebene Argument leer ist, wird ein Versprechen zurückgegeben, das bereits leer ist gelöst .
  • Wenn die übergebene Iterable keine Versprechen enthält, gibt sie ein Versprechen zurück, das aufgelöst wird asynchron .
  • In allen anderen Fällen wird ein ausstehendes Promise zurückgegeben.

Erfüllung und Ablehnung der Promise.all()-Methode:



Erfüllung: Das zurückgegebene Versprechen ist erfüllt,

  • Wenn das übergebene Iterable leer ist, gibt diese Methode synchron ein Versprechen zurück, das bereits aufgelöst ist.
  • Wenn alle übergebenen Versprechen erfüllt sind, werden die zurückgegebenen Versprechen asynchron erfüllt.
  • Hier hängt die erfolgreiche Ausführung dieser speziellen Methode vollständig von allen Versprechen ab, dass sie erfolgreich ausgeführt wird.

Ablehnung: Wenn eines der übergebenen Versprechen abgelehnt wird, lehnt diese Methode den Wert dieses Versprechens ab, unabhängig davon, ob die anderen Versprechen gelöst wurden oder nicht. Mit anderen Worten: Wenn ein Versprechen nicht ausgeführt werden kann, gibt die Methode Promise.all() einen Fehler zurück und berücksichtigt nicht, ob andere Versprechen erfolgreich erfüllt wurden oder nicht.

Die folgenden Beispiele veranschaulichen die JavaScript-Methode Promise.all():



Beispiel 1: Promise.all()-Methode wartet auf Erfüllung

Javascript


Vergleichen Sie Zeichenfolgen Java



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);> });>

>

>

Ausgabe

[ 50, 200, 'geek' ]>

Beispiel 2: Hier wird die Promise.all()-Methode nach 2000 ms aufgelöst und die Ausgabe wird als Array angezeigt.

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(Ergebnis +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>console.log(result))>

>

>

Ausgabe:

Completed in 1000 Completed in 1000, Completed in 2000>

Hier, Promise.all() Methode ist die Reihenfolge der eingehaltenen Versprechen. Das erste Versprechen im Array wird in das erste Element des Ausgabearrays aufgelöst, das zweite Versprechen wird ein zweites Element im Ausgabearray sein. und so weiter.

Beispiel 3: Hier ist , Die Promise.all() Die Methode wartet, bis alle Versprechen gelöst sind.

Javascript




// 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']>

>

>

Ausgabe :

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

Beispiel 4: Wie in diesem Beispiel gezeigt: Wenn eines der Versprechen fehlschlägt, schlagen auch alle anderen Versprechen fehl und das Ergebnis wird in der Konsole in Form eines Fehlers angezeigt. Dann Promise.all() Methode wird abgelehnt.

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.>

>

>

Ausgabe :

Error Rejected in 2000>

Beispiel-5: In diesem Beispiel verwenden wir eine Timer-Funktion (insbesondere die setTimeout-Funktion) mit verschiedenen Timern, die in verschiedene Versprechen geschrieben werden und diese Versprechen außerdem in Promise.all()-Methoden übergeben werden, um das Ergebnis zu erhalten.

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...>

>

>

Ausgabe:

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

Unterstützte Browser:

Die von unterstützten Browser JavaScript Promise.all() Die Methoden sind unten aufgeführt:

  • Google Chrome 32 und höher
  • Kante 12 und höher
  • Firefox 29 und höher
  • Opera 19 und höher
  • Safari 8 und höher
  • Internet Explorer wird nicht unterstützt