Observable: forEach()-Methode
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 forEach()-Methode der Observable-Schnittstelle gibt ein Promise zurück, das mit undefined erfüllt wird, wenn das Quell-Observable abgeschlossen ist. Zuvor führt die Methode für jeden ausgegebenen Wert eine Callback-Funktion aus.
Syntax
forEach(callback)
forEach(callback, options)
Parameter
callback-
Eine Funktion, die für jeden vom Quell-Observable ausgegebenen Wert ausgeführt wird. Ihr Rückgabewert wird ignoriert. Die Funktion wird mit den folgenden Argumenten aufgerufen:
optionsOptional-
Ein Optionsobjekt mit der folgenden Eigenschaft:
signalOptional-
Ein
AbortSignal, mit dem der Vorgang abgebrochen werden kann. Wenn das Signal abgebrochen wird, wird das Abonnement der Quelle beendet und das Promise mit demreasondes Signals zurückgewiesen. Ist das Signal bereits abgebrochen, wird das Promise zurückgewiesen, ohne die Quelle zu abonnieren.
Rückgabewert
Ein Promise, das mit undefined erfüllt wird, wenn das Quell-Observable abgeschlossen ist.
Wenn in der Quelle ein Fehler auftritt oder callback eine Ausnahme auslöst, wird das Promise mit diesem Fehler zurückgewiesen. Wird der Vorgang abgebrochen, wird das Promise mit dem Abbruchgrund zurückgewiesen.
Beschreibung
Wie andere Operatoren, die ein Promise zurückgeben, abonniert diese Methode die Quelle unmittelbar beim Aufruf. Ein gesonderter Aufruf von subscribe() ist nicht erforderlich.
forEach() ruft callback für jeden Wert aus der Quelle einmal auf. Wenn die Quelle nie abgeschlossen wird, bleibt das Promise ausstehend, sofern kein Fehler auftritt oder der Vorgang abgebrochen wird.
Der Rückgabewert von callback wird ignoriert. Auf zurückgegebene Promises wird nicht gewartet, und ihre Zurückweisungen werden von forEach() nicht behandelt. Um bei jedem Wert auf asynchrone Vorgänge zu warten, verwenden Sie flatMap() und geben Sie aus der Mapper-Funktion ein Promise zurück.
Wenn callback eine Ausnahme auslöst, wird das Abonnement der Quelle beendet.
Beispiele
>forEach() verwenden
Dieses Beispiel zeigt die Koordinaten der ersten drei Klicks auf die Schaltfläche an und fügt anschließend eine Abschlussmeldung hinzu. 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 = "Waiting for clicks";
btn
.when("click")
.take(3)
.forEach((event, index) => {
output.textContent = `Click ${index + 1}: ${event.clientX},${event.clientY}`;
})
.then(() => {
restart.disabled = false;
output.textContent += " — Count complete.";
});
}
restart.when("click").subscribe(start);
start();
Spezifikationen
| Spezifikation |
|---|
| Observable> # dom-observable-foreach> |