Sie lesen die englische Version dieses Inhalts, da für dieses Gebietsschema noch keine Übersetzung vorhanden ist. Helfen Sie uns, diesen Artikel zu übersetzen!
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. Eine Ablehnung (reject) erfolgt mit dem Grund des ersten Promises, das abgelehnt wurde.
Syntax
Promise.all(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
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 |