ReadableStreamBYOBRequest: Methode respondWithNewView()

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die respondWithNewView()-Methode der ReadableStreamBYOBRequest-Schnittstelle gibt eine neue Ansicht an, auf die der Verbraucher des zugehörigen lesbaren Byte-Streams schreiben soll, anstatt auf ReadableStreamBYOBRequest.view.

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

Die Methode ist für Anwendungsfälle gedacht, bei denen eine zugrunde liegende Byte-Quelle byobRequest.view intern übertragen muss, bevor sie ihre Antwort abschließt. Beispielsweise kann die Quelle die BYOB-Ansicht an einen separaten Worker-Thread übertragen und darauf warten, dass der Worker sie zurück überträgt, sobald sie gefüllt wurde.

Syntax

js
respondWithNewView(view)

Parameter

view

Ein TypedArray oder ein DataView, auf das der Verbraucher des zugehörigen lesbaren Byte-Streams schreiben soll, anstatt auf ReadableStreamBYOBRequest.view.

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

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

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

RangeError

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

Beispiele

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

Zum Beispiel könnten wir die Ansicht definieren und wie unten gezeigt 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 Standard
# ref-for-rs-byob-request-respond-with-new-view①

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch