ReadableStreamBYOBRequest: Methode respondWithNewView()
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 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
respondWithNewView(view)
Parameter
view
-
Ein
TypedArray
oder einDataView
, auf das der Verbraucher des zugehörigen lesbaren Byte-Streams schreiben soll, anstatt aufReadableStreamBYOBRequest.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 gleichenbyteOffset
haben und einebyteLength
(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 dieview
-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 vonReadableStreamBYOBRequest.view
übereinstimmt. Beispielsweise, wenn es nicht der gleiche Puffer (oder eine übertragene Version) ist, einen anderenbyteOffset
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:
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