ReadableStreamBYOBRequest: respondWithNewView() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die respondWithNewView() Methode des ReadableStreamBYOBRequest-Interfaces gibt eine neue Ansicht an, auf die der Verbraucher des zugehörigen lesbaren Bytestreams schreiben soll, anstelle der ReadableStreamBYOBRequest.view.

Die neue Ansicht muss ein TypedArray oder ein DataView sein, das eine Ansicht auf denselben Speicherbereich wie ReadableStreamBYOBRequest.view bietet. Nachdem diese Methode aufgerufen wurde, wird die in die Methode übergebene Ansicht übertragen und kann nicht mehr verändert werden.

Die Methode ist für Anwendungsfälle gedacht, in denen eine zugrunde liegende Bytequelle eine byobRequest.view intern übertragen muss, bevor sie ihre Antwort beendet. Zum Beispiel könnte die Quelle die BYOB-Ansicht an einen separaten Worker-Thread übertragen und warten, bis der Worker sie zurücküberträgt, sobald sie gefüllt ist.

Syntax

js
respondWithNewView(view)

Parameter

view

Ein TypedArray oder ein DataView, auf den der Verbraucher des zugehörigen lesbaren Bytestreams schreiben soll, anstelle von ReadableStreamBYOBRequest.view.

Dies muss eine Ansicht auf denselben Speicherbereich wie ReadableStreamBYOBRequest.view sein und den gleichen oder weniger Speicher belegen. Insbesondere muss es entweder der Puffer der Ansicht oder eine übertragene Version davon sein, denselben byteOffset haben und eine byteLength (Anzahl der geschriebenen Bytes), die kleiner oder gleich derjenigen der Ansicht ist.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelöst, wenn das Quellobjekt nicht ReadableStreamBYOBRequest ist, oder wenn kein zugehöriger Controller existiert, oder wenn der zugehörige interne Array-Puffer nicht existent oder getrennt ist. Es kann auch ausgelöst werden, wenn die view eine Länge von null hat, während ein aktiver Leser vorhanden ist, oder eine nicht-null Länge hat, wenn es auf einem geschlossenen Stream aufgerufen wird.

RangeError

Wird ausgelöst, wenn die neue view nicht mit dem Speicherbereich von ReadableStreamBYOBRequest.view übereinstimmt. Zum Beispiel ist es nicht derselbe Puffer (oder eine übertragene Version davon), hat einen anderen byteOffset oder ist größer als der für die zugrundeliegende Ansicht verfügbare Speicher.

Beispiele

Die zu übertragende Ansicht muss vom gleichen Typ wie ReadableStreamBYOBRequest.view sein, denselben zugrunde liegenden Puffer und Byte-Offset haben und die gleiche oder eine kleinere byteLength aufweisen.

Zum Beispiel könnten wir die Ansicht definieren und wie folgt antworten:

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

Spezifikationen

Specification
Streams
# ref-for-rs-byob-request-respond-with-new-view①

Browser-Kompatibilität

Siehe auch