Observable: Methode finally()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Methode finally() des Interfaces Observable gibt ein neues Observable zurück, das das Quell-Observable widerspiegelt und einen Callback aufruft, wenn dessen Subscription endet.
Syntax
finally(callback)
Parameter
callback-
Eine Funktion, die ausgeführt wird, wenn die Subscription durch Abschluss, einen Fehler oder das Abmelden aller Observer endet. Die Funktion wird ohne Argumente aufgerufen. Ihr Rückgabewert wird ignoriert.
Rückgabewert
Ein neues Observable. Wird es abonniert, gibt es die Werte des Quell-Observables aus und leitet dessen Abschluss oder Fehler weiter. Wenn die Subscription endet, wird callback ausgeführt.
Beschreibung
Wie andere Operatoren, die ein Observable zurückgeben, arbeitet diese Methode verzögert: Ihr Aufruf erstellt ein neues Observable, ohne das Quell-Observable zu abonnieren. Die Verarbeitung beginnt, wenn das zurückgegebene Observable abonniert wird.
Der Callback wird als Teardown beim Subscriber des zurückgegebenen Observables registriert. Er wird synchron vor den Abschluss- oder Fehler-Callbacks der Observer ausgeführt und auch dann, wenn sich alle Observer abmelden. Einzelheiten zum Teardown-Verhalten finden Sie unter Subscriber.addTeardown().
Hinweis:
Dieses Verhalten mit einer gemeinsam genutzten Subscription könnte sich ändern. Ein Vorschlag, jedem Observer einen eigenen Subscriber zu geben, würde dazu führen, dass jede Subscription eine separate Ausführung startet, statt eine aktive Subscription wiederzuverwenden.
Wenn callback eine Ausnahme auslöst, wird sie dem globalen Objekt gemeldet, ohne den Abschluss oder Fehler des Streams zu verändern. Auf ein zurückgegebenes Promise wird nicht gewartet, und dessen Ablehnung wird von finally() nicht behandelt.
Beispiele
>finally() verwenden
Dieses Beispiel zeigt Mauskoordinaten an, bis auf die Schaltfläche „Stop“ geklickt wird. Der finally()-Callback fügt eine Nachricht hinzu, wenn die Ausgabe der Koordinaten endet. Klicken Sie nach dem Ende des Streams auf „Restart“, um es erneut zu versuchen.
const btn = document.querySelector("button");
const output = document.querySelector("p");
const restart = document.querySelector("#restart");
function start() {
restart.disabled = true;
output.textContent = "Move the mouse";
document.body
.when("mousemove")
.takeUntil(btn.when("click"))
.finally(() => {
restart.disabled = false;
output.textContent += " — Reporting stopped.";
})
.subscribe((event) => {
output.textContent = `${event.clientX},${event.clientY}`;
});
}
restart.when("click").subscribe(start);
start();
Spezifikationen
| Spezifikation |
|---|
| Observable> # dom-observable-finally> |