ReadableByteStreamController
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die ReadableByteStreamController
-Schnittstelle der Streams API repräsentiert einen Controller für einen lesbaren Byte-Stream. Sie ermöglicht die Steuerung des Zustands und der internen Warteschlange eines ReadableStream
mit einer zugrunde liegenden Byte-Quelle und erlaubt eine effiziente Zero-Copy-Übertragung von Daten von der zugrunde liegenden Quelle zu einem Verbraucher, wenn die interne Warteschlange des Streams leer ist.
Eine Instanz dieses Controller-Typs wird erstellt, wenn ein underlyingSource
-Objekt mit der Eigenschaft type="bytes"
als Argument an den ReadableStream()
-Konstruktor übergeben wird. Das underlyingSource
-Objekt kann auch die Callback-Funktionen start()
und pull()
definieren. Diese werden mit dem Controller als Parameter aufgerufen, um die zugrunde liegende Quelle einzurichten und Daten anzufordern, wenn sie benötigt werden.
Die zugrunde liegende Quelle verwendet den Controller, um Daten über seine byobRequest
-Eigenschaft oder die enqueue()
-Methode an den Stream zu liefern. byobRequest
ist ein ReadableStreamBYOBRequest
-Objekt, das eine ausstehende Anforderung eines Verbrauchers repräsentiert, eine Zero-Copy-Übertragung von Daten direkt an einen Verbraucher vorzunehmen. byobRequest
muss verwendet werden, um Daten zu kopieren, falls es existiert (verwenden Sie in diesem Fall nicht enqueue()
). Wenn die zugrunde liegende Quelle Daten an den Stream senden muss und byobRequest
null
ist, kann die Quelle enqueue()
aufrufen, um die Daten in die internen Warteschlangen des Streams einzufügen.
Beachten Sie, dass die byobRequest
nur im "BYOB-Modus" erstellt wird, wenn eine Anforderung eines Lesers vorliegt und die interne Warteschlange des Streams leer ist. Der "BYOB-Modus" ist aktiviert, wenn ein ReadableStreamBYOBReader
verwendet wird (typischerweise erzeugt durch Aufruf von ReadableStream.getReader()
mit dem Argument { mode: 'byob' }
). Es wird auch aktiviert, wenn ein Standardleser verwendet wird und autoAllocateChunkSize
im ReadableController()
-Konstruktor angegeben wird.
Eine zugrunde liegende Byte-Quelle kann den Controller auch verwenden, um den Stream zu close()
, wenn alle Daten gesendet wurden, und Fehler von der zugrunde liegenden Quelle mit error()
zu melden. Die desiredSize
-Eigenschaft des Controllers wird verwendet, um "Backpressure" anzuwenden, indem sie der zugrunde liegenden Quelle die Größe der internen Warteschlange mitteilt (kleine Werte deuten darauf hin, dass die Warteschlange sich füllt und es für die zugrunde liegende Quelle wünschenswert sein könnte, das Zufluss-Tempo zu pausieren oder zu drosseln).
Beachten Sie, dass, obwohl der Controller hauptsächlich von der zugrunde liegenden Byte-Quelle verwendet wird, kein Grund besteht, dass er nicht auch von anderen Teilen des Systems genutzt werden kann, um dem Stream Signale zu senden.
Konstruktor
Keine. ReadableByteStreamController
-Instanzen werden automatisch erstellt, wenn ein underlyingSource
mit der Eigenschaft type="bytes"
an den ReadableStream()
-Konstruktor übergeben wird.
Instanz-Eigenschaften
ReadableByteStreamController.byobRequest
Nur lesbar-
Gibt die aktuelle BYOB-Abzugsanforderung zurück oder
null
, falls keine ausstehende Anforderung besteht. ReadableByteStreamController.desiredSize
Nur lesbar-
Gibt die gewünschte Größe zurück, die erforderlich ist, um die interne Warteschlange des Streams zu füllen.
Instanz-Methoden
ReadableByteStreamController.close()
-
Schließt den zugehörigen Stream.
ReadableByteStreamController.enqueue()
-
Stellt einen gegebenen Datenblock in die zugehörige Stream-Warteschlange.
ReadableByteStreamController.error()
-
Verursacht, dass alle zukünftigen Interaktionen mit dem zugehörigen Stream einen Fehler auslösen.
Beispiele
Der Controller wird von einer zugrunde liegenden Quelle verwendet, um Daten zu übertragen oder einzureihen, um zu signalisieren, dass der Stream keine Daten mehr hat (geschlossen wurde) oder dass ein Fehler aufgetreten ist. Er wird auch verwendet, um die zugrunde liegende Quelle von "stromaufwärts" über die gewünschte Datenrate zu informieren, unter Verwendung von desiredSize
.
Das Beispiel in Using readable byte streams, insbesondere Creating a readable socket push byte stream, zeigt die meisten dieser Fälle.
Spezifikationen
Specification |
---|
Streams Standard # rbs-controller-class |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Streams API concepts
- Using readable byte streams
ReadableStream
- WHATWG Stream Visualizer, für eine grundlegende Visualisierung von lebbaren, beschreibbaren und Transformationsstreams.
- Web-streams-polyfill oder sd-streams - Polyfills