Diese Übersetzung ist in Arbeit.

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

Zusammenfassung

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. Ein Ablehnung (reject) erfolgt mit dem Grund des ersten Promises, das abgelehnt wurde.

Syntax

Promise.all(iterable);

Parameter

 

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

 

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

Wir konvertieren die Kompatibilitätsdaten in ein maschinenlesbares JSON Format. Diese Kompatibilitätstabelle liegt noch im alten Format vor, denn die darin enthaltenen Daten wurden noch nicht konvertiert. Finde heraus wie du helfen kannst!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 32 29.0 (29.0) Nicht unterstützt 19 7.1
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support Nicht unterstützt 29.0 (29.0) Nicht unterstützt Nicht unterstützt iOS 8 32

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: kdex, davidrockt, Sharian
 Zuletzt aktualisiert von: kdex,