[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/API/ReadableStreamBYOBRequest [Back]  [Original]

ReadableStreamBYOBRequest - Web-APIs | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

ReadableStreamBYOBRequest

Baseline 2026
Neu verfgbar

Seit Mrz 2026 funktioniert diese Funktion auf aktuellen Gerten und in aktuellen Browserversionen. Auf lteren Gerten oder in lteren Browsern funktioniert sie mglicherweise nicht.

Hinweis: Diese Funktion ist in Web Workers verfgbar.

Das ReadableStreamBYOBRequest-Interface der Streams-API reprsentiert einen "Abfragewunsch" fr Daten aus einer zugrunde liegenden Quelle, der als Zero-Copy-Transfer an einen Verbraucher bermittelt wird (wobei die internen Warteschlangen des Streams umgangen werden).

ReadableStreamBYOBRequest-Objekte werden im "BYOB-Modus" erstellt, wenn ein Verbraucher eine Anfrage fr Daten stellt und die interne Warteschlange des Streams leer ist. (Der Stream wird die Anfrage des Verbrauchers direkt bearbeiten, wenn er bereits gepufferte Daten hat). Eine zugrunde liegende Bytequelle kann auf aktive BYOB-Anfragen ber die ReadableByteStreamController.byobRequest-Eigenschaft ihres Controllers zugreifen, die auf null gesetzt wird, wenn keine ausstehende Anfrage vorliegt.

Eine zugrunde liegende Quelle, die den "BYOB-Modus" untersttzt, sollte auf ReadableByteStreamController.byobRequest prfen und muss es fr die Datenbertragung verwenden, wenn es vorhanden ist. Wenn Daten von der zugrunde liegenden Quelle ankommen, whrend ReadableByteStreamController.byobRequest null ist, knnen sie mit ReadableByteStreamController.enqueue() in die Warteschlange gestellt werden. Dies knnte passieren, wenn eine zugrunde liegende Push-Quelle neue Daten empfngt, whrend die internen Puffer des Streams nicht leer sind.

Eine zugrunde liegende Quelle verwendet die Anfrage, indem sie Daten in die view des BYOB-Antrags schreibt und dann respond() aufruft, oder indem sie respondWithNewView() aufruft und eine neue Ansicht als Argument bergibt. Beachten Sie, dass die "neue Ansicht" tatschlich eine Ansicht ber denselben Puffer wie die ursprngliche view sein muss, beginnend am selben Offset. Dies knnte verwendet werden, um einen krzeren Puffer zurckzugeben, wenn die zugrunde liegende Quelle nicht in der Lage ist, die gesamte ursprngliche Ansicht zu fllen.

Beachten Sie, dass ein ReadableByteStreamController nur fr zugrunde liegende Quellen erstellt wird, wenn type="bytes" fr die Quelle im ReadableStream()-Konstruktor angegeben ist. Der "BYOB-Modus" wird aktiviert, wenn entweder autoAllocateChunkSize im ReadableController()-Konstruktor angegeben ist oder wenn ein ReadableStreamBYOBReader verwendet wird (in der Regel erstellt durch Aufrufen von ReadableStream.getReader() mit dem Argument { mode: 'byob' }).

In diesem Artikel

Konstruktor

Keiner. Eine ReadableStreamBYOBRequest-Instanz wird bei Bedarf automatisch durch ReadableByteStreamController erstellt.

Instanzeigenschaften

ReadableStreamBYOBRequest.view Schreibgeschtzt

Gibt die aktuelle Ansicht zurck. Dies ist eine Ansicht auf einem Puffer, die zum Verbraucher bertragen wird, wenn ReadableStreamBYOBRequest.respond() aufgerufen wird.

Instanzmethoden

ReadableStreamBYOBRequest.respond()

Signalisieren Sie dem zugehrigen lesbaren Bytestrom, dass die angegebene Anzahl von Bytes in die aktuelle view geschrieben wurde, was dann dazu fhrt, dass die ausstehende Anfrage des Verbrauchers gelst wird. Beachten Sie, dass nach dem Aufruf dieser Methode die view bertragen wird und nicht mehr modifizierbar ist.

ReadableStreamBYOBRequest.respondWithNewView()

Signalisieren Sie dem zugehrigen lesbaren Bytestrom, dass die als Argument bergebene Ansicht an den Verbraucher des lesbaren Bytestroms bertragen werden soll. Diese neue Ansicht muss denselben Puffer wie die ursprngliche view verwenden, am selben Offset beginnen und die gleiche Lnge oder krzer sein. Beachten Sie, dass nach dem Aufruf dieser Methode die view bertragen wird und nicht mehr modifizierbar ist.

Beispiele

Der folgende Code stammt aus dem Live-Beispiel in Verwendung von lesbaren Bytestreams > Erstellen eines lesbaren Socket-Push-Bytestreams.

Eine Push-Bytequelle mit zu bertragenden Daten sollte zuerst prfen, ob controller.byobRequest nicht-null ist. Eine Pull-Bytequelle bentigte diese berprfung nur, wenn die automatische Chunk-Allocation nicht aktiviert war und sie mit einem Standardleser verwendet wurde.

js
if (controller.byobRequest) {
  /* code to transfer data */
}

Es gibt zwei Mglichkeiten, Daten in eine ReadableStreamBYOBRequest zu lesen und dann zu bertragen. Die erste ist, die Daten in die ReadableStreamBYOBRequest.view-Eigenschaft zu schreiben und dann ReadableStreamBYOBRequest.respond() aufzurufen, um die Menge der zu bertragenden Daten anzuzeigen. Nach der Operation wird die byobRequest.view gelst und die Anfrage sollte verworfen werden.

Der folgende Code zeigt diesen Fall unter Verwendung einer hypothetischen readInto()-Methode, um Daten in die Ansicht zu kopieren:

js
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
controller.byobRequest.respond(bytesRead);

Der andere Ansatz besteht darin, ReadableStreamBYOBRequest.respondWithNewView() aufzurufen und Ihre eigene Ansicht auf den gleichen zugrunde liegenden Sicherungsdaten zu bergeben. Beachten Sie, dass dies nur eine andere Mglichkeit ist, den Bereich des zugrunde liegenden Puffers/Speichers anzugeben, der tatschlich bertragen wird. Das respondWithNewView-quivalent zu dem obigen Code wre:

js
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
const newView = new Uint8Array(v.buffer, v.byteOffset, bytesRead);
controller.byobRequest.respondWithNewView(newView);

Spezifikationen

Spezifikation
Streams
# rs-byob-request-class

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page