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