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
TypedArrayoder einDataView, auf den der Verbraucher des zugehörigen lesbaren Bytestreams schreiben soll, anstelle vonReadableStreamBYOBRequest.view.Dies muss eine Ansicht auf denselben Speicherbereich wie
ReadableStreamBYOBRequest.viewsein und den gleichen oder weniger Speicher belegen. Insbesondere muss es entweder der Puffer der Ansicht oder eine übertragene Version davon sein, denselbenbyteOffsethaben 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
ReadableStreamBYOBRequestist, 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 dievieweine 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
viewnicht mit dem Speicherbereich vonReadableStreamBYOBRequest.viewübereinstimmt. Zum Beispiel ist es nicht derselbe Puffer (oder eine übertragene Version davon), hat einen anderenbyteOffsetoder 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①> |
Browser-Kompatibilität
Loading…