Promise.all()

Diese Übersetzung ist unvollständig. Bitte helfen Sie uns, diesen Artikel aus dem Englischen zu übersetzen

Die Promise.all(iterable) Methode gibt einen Promise zurück, welcher erfüllt(resolved) wird, wenn alle Promises in dem iterable - Argument erfüllt wurden oder wenn das iterable - Argument keine Promises enthält. Eine Ablehnung (reject) erfolgt mit dem Grund des ersten Promises, das abgelehnt wurde, oder mit dem Error der von dem ersten Argument, wenn das innerhalb eines try/catch/throw blocks gefangen wurde.

Es wird typischerweise für mehrere asynchrone Aufgaben die parallel laufen und die Promises als Ergebnisse haben, so das eines warten kann, bis alle anderen Aufgaben abgeschlossen sind.

Syntax

Promise.all(iterable);

Parameter

iterable
Ein iterierbares Objekt, z.B. ein Array oder ein String.

Rückgabe-Wert

  • Ein bereits eingelöstes Promise, wenn das eingegebene iterable - Argument leer ist.
  • Ein asynchron eingelöstes Promise, wenn das eingegebene iterable - Argument keine Promises enthält. Achtung, Google Chrome 58 gibt in diesem Fall ein bereits eingelöstes Promise zurück.
  • Ein ausstehendes (pending) Promise in allen anderen Fällen. Dieses zurückgegebene Promise wird dann asynchron erfüllt/abgelehnt (sobald der stack leer ist), wenn alle Promises des gegebenen iterable erfüllt wurden, oder wenn irgendeiner der Promises abgelehnt wird. Die Rückgabewerte entsprechen dann der Reihenfolge der Promises, unabhängig von der Reihenfolge der Erfüllung.

Beschreibung

Diese Methode dient dem Bündeln von mehreren Promises.

Erfüllt: 
Wenn alle Promises erfolgreich erfüllt werden, oder keine Promises sind, wird Promise.all mit einem Array, welches die Rückgabewerte der einzelnen Promises (aber auch die nicht-Promise Werte) enthält, erfüllt. Wenn ein leeres Array übergeben wird, wird  Promise.all (synchron) sofort erfüllt. 

Abgelehnt:
Wenn eines der übergebenen Promises abgelehnt wird, wird Promise.all asynchron mit dem Wert des fehlgeschlagenen Promise abgelehnt, ganz egal, ob die anderen Promises erfolgreich waren oder nicht.

Beispiele

Erfolgreich:

var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
   setTimeout(resolve, 100, 'foo');
});

Promise.all([p1, p2, p3])
.then(values => {
  console.log(values); // [3, 1337, "foo"]
});

Sofortige Ablehnung:

var p1 = new Promise((resolve, reject) => { 
  setTimeout(resolve, 1000, 'one'); 
}); 
var p2 = new Promise((resolve, reject) => { 
  setTimeout(resolve, 2000, 'two'); 
});
var p3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 3000, 'three');
});
var p4 = new Promise((resolve, reject) => {
  setTimeout(resolve, 4000, 'four');
});
var p5 = new Promise((resolve, reject) => {
  reject('reject');
});

Promise.all([p1, p2, p3, p4, p5]).then(values => { 
  console.log(values);
}, reason => {
  console.log(reason)
});

//From console:
//"reject"

//You can also use .catch
Promise.all([p1, p2, p3, p4, p5]).then(values => { 
  console.log(values);
}).catch(reason => { 
  console.log(reason)
});

//From console: 
//"reject"

Spezifikationen

Specification Status Comment
domenic/promises-unwrapping Draft Standardization work is taking place here.
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Promise.all' in dieser Spezifikation.
Standard Initial definition in an ECMA standard.

Browserkompatiblität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
all()Chrome Vollständige Unterstützung 32Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 29IE Keine Unterstützung NeinOpera Vollständige Unterstützung 19Safari Vollständige Unterstützung 8WebView Android Vollständige Unterstützung 4.4.3Chrome Android Vollständige Unterstützung 32Firefox Android Vollständige Unterstützung 29Opera Android Vollständige Unterstützung 19Safari iOS Vollständige Unterstützung 8Samsung Internet Android Vollständige Unterstützung 2.0nodejs Vollständige Unterstützung 0.12

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung

Siehe auch