| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/Observable | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Experimentell: Dies ist eine experimentelle Technologie
berprfen Sie die Browser-Kompatibilittstabelle sorgfltig vor der Verwendung auf produktiven Webseiten.
Das Observable-Interface der Observable API stellt einen Strom von Werten dar, den Sie abonnieren knnen.
Observable-Objekte (hufig Observables genannt) lassen sich als leistungsfhigere Event-Listener verstehen, die mit EventTarget zusammenarbeiten. Sie verbessern den Code zur Ereignisbehandlung hnlich wie Promises den Umgang mit Callbacks verbessert haben: Der Code wird einfacher, weil weniger verschachtelte Blcke erforderlich sind.
Observables verfgen ber mehrere Methoden, die jeweils ein neues Observable zurckgeben. Sie knnen diese Methoden verketten, um eine Pipeline zu erstellen und den Wertestrom gezielt zu steuern.
Es gibt drei wesentliche Mglichkeiten, Observables zu erhalten:
EventTarget.when() gibt ein Observable zurck, das einen Strom von Ereignissen darstellt, die auf dem EventTarget ausgelst werden. Auch Bibliotheken knnen Observables zurckgeben.Observable() knnen Sie eigene Observables erstellen.Observable.from() knnen Sie Objekte wie Promises und Iterables in Observables umwandeln.Observable() Erstellt eine neue Instanz eines Observable-Objekts.
from() Gibt ein Observable zurck, das aus einem Promise, einem Iterable oder einem asynchronen Iterable umgewandelt wurde, oder gibt ein bereits vorhandenes Observable unverndert zurck.
subscribe() Abonniert einen Wertestrom, meist einen Strom von Ereignissen.
catch() Gibt ein neues Observable zurck, das einen Fehler des Quell-Observables durch Werte eines anderen Observables ersetzt.
drop() Gibt ein neues Observable zurck, das die angegebene Anzahl von Werten am Anfang des Quell-Observables berspringt.
filter() Gibt ein neues Observable zurck, das nur die Werte des Quell-Observables ausgibt, fr die die bergebene Callback-Funktion einen truthy-Wert zurckgibt.
finally() Gibt ein neues Observable zurck, das das Quell-Observable widerspiegelt und einen Callback aufruft, wenn dessen Abonnement endet.
flatMap() Gibt ein neues Observable zurck, das jeden Wert des Quell-Observables auf ein inneres Observable abbildet und die Werte der inneren Observables nacheinander ausgibt.
inspect() Gibt ein neues Observable zurck, das das Quell-Observable widerspiegelt und Callbacks aufruft, um dessen Werte und den Lebenszyklus seines Abonnements zu untersuchen.
map() Gibt ein neues Observable zurck, das die Werte des Quell-Observables ausgibt, nachdem jeder Wert durch eine Abbildungsfunktion transformiert wurde.
switchMap() Gibt ein neues Observable zurck, das jeden Wert des Quell-Observables auf ein inneres Observable abbildet und nur Werte des jeweils neuesten inneren Observables ausgibt.
take() Gibt ein neues Observable zurck, das die angegebene Anzahl von Werten vom Anfang des Quell-Observables ausgibt und anschlieend abgeschlossen wird.
takeUntil() Gibt ein neues Observable zurck, das Werte des Quell-Observables ausgibt, bis ein anderes Observable einen Wert ausgibt oder ein Fehler bei diesem auftritt.
every() Gibt ein Promise zurck, das mit einem booleschen Wert erfllt wird, der angibt, ob jeder vom Quell-Observable ausgegebene Wert die bergebene Prffunktion erfllt.
find() Gibt ein Promise zurck, das mit dem ersten vom Quell-Observable ausgegebenen Wert erfllt wird, der die bergebene Prffunktion erfllt, oder mit undefined, falls das Quell-Observable ohne Treffer abgeschlossen wird.
first() Gibt ein Promise zurck, das mit dem ersten vom Quell-Observable ausgegebenen Wert erfllt wird.
forEach() Gibt ein Promise zurck, das mit undefined erfllt wird, wenn das Quell-Observable abgeschlossen ist, nachdem fr jeden ausgegebenen Wert ein Callback ausgefhrt wurde.
last() Gibt ein Promise zurck, das mit dem letzten vom Quell-Observable ausgegebenen Wert erfllt wird.
reduce() Gibt ein Promise zurck, das mit einem einzelnen Wert erfllt wird, der durch Kombination der Werte des Quell-Observables mithilfe einer Reducer-Funktion entsteht.
some() Gibt ein Promise zurck, das mit einem booleschen Wert erfllt wird, der angibt, ob mindestens ein vom Quell-Observable ausgegebener Wert die bergebene Prffunktion erfllt.
toArray() Gibt ein Promise zurck, das mit einem neuen Array erfllt wird, das die Werte des Quell-Observables in der Reihenfolge ihrer Ausgabe enthlt.
Dieses Beispiel zeigt die Mauskoordinaten nur dann in einem <p>-Element an, wenn sich der Mauszeiger ber einem <div>-Element bewegt. Die Pipeline filtert die mousemove-Ereignisse des Body-Elements nach ihrem Ziel und extrahiert die Koordinaten. Informationen zum Aufbau der Seite finden Sie unter Ein Observable transformieren.
const outputElem = document.querySelector("p");
document.body
.when("mousemove")
.filter((e) => e.target.matches("div"))
.map((e) => ({ x: e.clientX, y: e.clientY }))
.subscribe((p) => {
outputElem.textContent = `${p.x},${p.y}`;
});
Weitere funktionsfhige Beispiele finden Sie unter Observables verwenden.
Diese Funktion erstellt ein Observable, das in einem festgelegten Intervall einen aufsteigenden Zhlerstand ausgibt. Es wird im Intervall nach der Ausgabe der angeforderten Anzahl von Werten abgeschlossen. Der Teardown-Callback beendet das Intervall, wenn das Abonnement endet auch dann, wenn sich alle Beobachter abmelden. Einen mit einer Schaltflche gesteuerten Zhler, der diesen Producer verwendet, finden Sie unter Teardown.
Hinweis:
Dieses Verhalten mit einem gemeinsam genutzten Abonnement kann sich ndern. Ein Vorschlag, jedem Beobachter einen eigenen Subscriber zuzuweisen, wrde dazu fhren, dass jedes Abonnement eine separate Ausfhrung startet, statt ein aktives Abonnement wiederzuverwenden.
function makeTimer(timerInterval, iterations = Infinity) {
return new Observable((subscriber) => {
let i = 1;
const interval = setInterval(() => {
if (i === iterations + 1) {
subscriber.complete();
} else {
subscriber.next(i);
}
i++;
}, timerInterval);
subscriber.addTeardown(() => {
clearInterval(interval);
});
});
}
Weitere funktionsfhige Beispiele finden Sie unter Eigene Observables erstellen.
| Spezifikation |
|---|
| Observable # observable-api |
ObservableDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |