Promise.prototype.finally()

promise.finally(onFinally())

Ruft eine Funktion auf, egal wie das Promise endet. Die Funktion bekommt weder das Ergebnis noch den Fehler und reicht das Ergebnis des Promise unverändert weiter.

Parameter

  • onFinally() – wird ohne Argumente aufgerufen.

Rückgabewert

Ein neues Promise mit demselben Ergebnis.

Beispiele

const wait = (ms, value) => new Promise((done) => setTimeout(() => done(value), ms));
const fail = (ms, message) => new Promise((_, reject) => setTimeout(() => reject(new Error(message)), ms));
const state = { loading: false };
const load = (p) => {
  state.loading = true;
  return p.finally(() => { state.loading = false; console.log('Ladeanzeige ausgeblendet'); });
};
console.log(await load(wait(10, 'Daten')), state.loading);
await load(fail(10, 'Ausfall')).catch((e) => console.log('Fehler:', e.message, state.loading));

Ausgabe:

Ladeanzeige ausgeblendet
Daten false
Ladeanzeige ausgeblendet
Fehler: Ausfall false

Worauf Sie achten sollten

  • Der von finally() zurückgegebene Wert wird ignoriert; ein in finally() geworfener Fehler ersetzt allerdings das ursprüngliche Ergebnis.

Browserunterstützung

Baseline – weithin verfügbar: in allen gängigen Browsern seit Oktober 2018, gilt als weithin verfügbar seit April 2021. Ab Version: Chrome 63, Firefox 58, Safari 11.1; Node.js 10.0.0. Stand: Oktober 2026 (MDN browser-compat-data).

Siehe auch:
Promise.prototype.then()
Promise.prototype.catch()
try...catch