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 gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Mai 2022 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Der WritableStream() Konstruktor erstellt eine neue Instanz des WritableStream-Objekts.
Ein Objekt, das Methoden und Eigenschaften enthält, die definieren, wie sich die erstellte Stream-Instanz verhalten wird. Der controller-Parameter, der an die Methoden dieses Objekts übergeben wird, ist ein WritableStreamDefaultController, der Abbruch- und Fehlersignale bereitstellt. underlyingSink kann Folgendes enthalten:
start(controller) OptionalEine Methode, die sofort beim Erstellen des Objekts aufgerufen wird. Der Inhalt dieser Methode wird vom Entwickler definiert und sollte darauf abzielen, Zugriff auf das zugrunde liegende Ziel zu erhalten. Soll dieser Prozess asynchron durchgeführt werden, kann er ein Versprechen zurückgeben, um Erfolg oder Misserfolg zu signalisieren.
write(chunk, controller) OptionalDiese vom Entwickler definierte Methode wird aufgerufen, wenn ein neuer Datenblock (im chunk-Parameter angegeben) bereit ist, in das zugrunde liegende Ziel geschrieben zu werden. Sie kann ein Versprechen zurückgeben, um Erfolg oder Fehlschlagen des Schreibvorgangs zu signalisieren. Diese Methode wird nur aufgerufen, nachdem vorherige Schreibvorgänge erfolgreich waren und nie nachdem der Stream geschlossen oder abgebrochen wurde (siehe unten).
close(controller) OptionalDiese vom Entwickler definierte Methode wird aufgerufen, wenn die App signalisiert, dass sie das Schreiben von Datenblöcken in den Stream beendet hat. Der Inhalt sollte alles Notwendige tun, um die Schreibvorgänge im zugrunde liegenden Ziel abzuschließen und den Zugriff darauf freizugeben. Falls dieser Prozess asynchron ist, kann er ein Versprechen zurückgeben, um Erfolg oder Misserfolg zu signalisieren. Diese Methode wird nur aufgerufen, nachdem alle angestauten Schreibvorgänge erfolgreich waren.
abort(reason) OptionalDiese vom Entwickler definierte Methode wird aufgerufen, wenn die App signalisiert, dass sie den Stream abrupt schließen und in einen Fehlerzustand versetzen möchte. Sie kann alle gehaltenen Ressourcen bereinigen, ähnlich wie close(), aber abort() wird auch dann aufgerufen, wenn Schreibvorgänge anstehen — diese Datenblöcke werden verworfen. Falls dieser Prozess asynchron ist, kann er ein Versprechen zurückgeben, um Erfolg oder Misserfolg zu signalisieren. Der reason-Parameter enthält eine Zeichenkette, die beschreibt, warum der Stream abgebrochen wurde.
queuingStrategy OptionalEin Objekt, das optional eine Warteschlangenstrategie für den Stream definiert. Dies nimmt zwei Parameter auf:
highWaterMarkEine nicht-negative Ganzzahl — dies definiert die Gesamtanzahl der Datenblöcke, die in der internen Warteschlange enthalten sein können, bevor Gegenverkehr angewendet wird.
size(chunk)Eine Methode mit einem Parameter chunk — dies gibt die Größe an, die für jeden Datenblock in Bytes verwendet wird.
Hinweis: Sie könnten Ihre eigene benutzerdefinierte queuingStrategy definieren oder eine Instanz von ByteLengthQueuingStrategy oder CountQueuingStrategy für diesen Objektwert verwenden. Wenn keine queuingStrategy angegeben wird, ist die standardmäßig verwendete dieselbe wie bei einer CountQueuingStrategy mit einem High Water Mark von 1.
Eine Instanz des WritableStream-Objekts.
Das folgende Beispiel veranschaulicht mehrere Merkmale dieser Schnittstelle. Es zeigt die Erstellung des WritableStream mit einem benutzerdefinierten Ziel und einer von der API bereitgestellten Warteschlangenstrategie. Anschließend wird eine Funktion namens sendMessage() aufgerufen, die den neu erstellten Stream und eine Zeichenkette übergibt. Innerhalb dieser Funktion wird die Methode getWriter() des Streams aufgerufen, die eine Instanz von WritableStreamDefaultWriter zurückgibt. Ein Aufruf von forEach() wird verwendet, um jeden Datenblock der Zeichenkette in den Stream zu schreiben. Schließlich geben write() und close() Versprechen zurück, die verarbeitet werden, um Erfolg oder Misserfolg von Datenblöcken und Streams zu behandeln.
Den vollständigen Code finden Sie in unserem einfachen Schreibbeispiel.
Aufgrund der Unterstützung von Gegenverkehr in der API kann seine Implementierung im Code weniger offensichtlich sein. Um zu sehen, wie Gegenverkehr implementiert ist, suchen Sie nach drei Dingen.
| Streams # ref-for-ws-constructor④ |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.