ECMAScript 2020

Promise-Methode: allSettled

Mehrere Promises gesammelt zurückgeben

Bereits mit der Einführung von Promises in ES6 wurden neben den primitiven Methoden Promise.resolve und Promise.reject auch die Kombinationen Promise.all und Promise.race eingeführt, mit denen der Zustand mehrerer Promises verarbeitet werden kann. Jeder dieser Kombinatoren nimmt ein iterierbares Objekt mit Promises entgegen und gibt ein einzelnes Promise zurück.

Sowohl all als auch race geben das Promise zurück, auch wenn ggf. noch nicht alle Input-Promises aufgelöst sind: all, sobald das erste Promise abgelehnt wurde und race sobald das erste Promise entweder erfüllt oder abgelehnt wurde.

Das neue Promise.allSettled hingegen wartet bis alle Input-Promises aufgelöst sind und gibt anschließend ein erfülltes Promise zurück, das als Ergebnis ein Array mit den Ergebnissen aller Input-Promises enthält: Status und Wert bzw. Ablehnungsgrund (vgl. Codebeispiel).

const p1 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('done'), 1000);
});

const p2 = new Promise((resolve, reject) => {
  setTimeout(() => reject('error'), 2000);
});

Promise.allSettled([p1, p2])
  .then((result) => console.log(result));

/* Ergebnis: 
[
  {status: 'fulfilled', value: 'done'}, 
  {status: 'rejected', reason: 'error'}
]
*/
Vorheriges
globalThis
Nächstes
import.meta