JavaScript/Objekte/Promise/finally
Die Methode finally von Promise.prototype registriert eine Callback-Funktion auf einem Promise, die aufgerufen wird, sobald das Promise auf einen Wert festgelegt wird. Dabei ist es gleichgültig, ob eine Festlegung auf fulfilled oder rejected erfolgt.
Im Unterschied zu then und catch steht im finally-Callback der Zustand und der Wert des Promises nicht zur Verfügung.
Bitte lies zum besseren Verständnis auch das Einführugstutorial zu Promises.
Syntax
promiseB = promiseA.finally(onFinally);
Parameter
-
onFinally() - Callback-Funktion, die beim Übergang in einen settled-Zustand aufzurufen ist. Es werden keine Parameter übergeben.
Verhalten des zurückgegebenen Promise B
Das von finally zurückgegebene Promise B übernimmt im Normalfall Zustand und Wert von Promise A. Ein von onFinally() zurückgegebener Wert wird ignoriert.
Aber es gibt Ausnahmen
- Wenn die onFinally-Methode einen Fehler wirft (
throw X), wird Promise B auf rejected gesetzt und erhält den geworfenen Wert. - Gibt die onFinally-Methode ein Thenable zurück, das noch nicht in einem settled-Zustand ist, bleibt Promise B im pending Zustand. Sobald das Thenable in einen settled-Zustand übergeht, wird wie in den nachfolgenden Fällen verfahren.
- Gibt die onFinally-Methode ein Thenable zurück, das im fulfilled-Zustand ist (oder darauf festgelegt wird), behält Promise B den Zustand und Wert von Promise A.
- Gibt die onFinally-Methode ein Thenable zurück, das im rejected-Zustand ist (oder darauf festgelegt wird), wird Promise B auf rejected gesetzt und übernimmt den Wert des Thenables.