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
respondWithNewView(view)
Parameter
view
-
Ein
TypedArray
oder einDataView
, auf den der Verbraucher des zugehörigen lesbaren Bytestreams schreiben soll, anstelle vonReadableStreamBYOBRequest.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, denselbenbyteOffset
haben und einebyteLength
(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 dieview
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 vonReadableStreamBYOBRequest.view
übereinstimmt. Zum Beispiel ist es nicht derselbe Puffer (oder eine übertragene Version davon), hat einen anderenbyteOffset
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:
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① |