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