ReadableStreamBYOBRequest: respondWithNewView() メソッド
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
respondWithNewView() は ReadableStreamBYOBRequest インターフェイスのメソッドで、 ReadableStreamBYOBRequest.view の代わりに、関連付けられた読み取り可能なバイトストリームの消費者が書き込むべき新しいビューを指定します。
新しいビューは TypedArray または DataView でなければならず、 ReadableStreamBYOBRequest.view と同じバッキングメモリー領域にビューを提供します。
このメソッドが呼び出された後、メソッドに渡されたビューは移譲され、変更できなくなりました。
このメソッドは、バイト基盤がレスポンスを完了する前に byobRequest.view を内部的に移譲する必要がある使用する用途を意図しています。
例えば、 BYOB ソースは BYOB ビューを別個のワーカースレッドに移譲し、それが満たされたらワーカがそれを移譲し返すのを待つことができます。
構文
respondWithNewView(view)
引数
view-
関連付けられた読み取り可能なバイトストリームの消費者が
ReadableStreamBYOBRequest.viewの代わりに書くべきTypedArrayまたはDataViewです。これは
ReadableStreamBYOBRequest.viewと同じバッキングメモリー領域上のビューでなければならず、占めるメモリーは同じかそれ以下でなければなりません。 具体的には、ビューのバッファーか移譲されたもので、同じbyteOffsetを保有し、byteLength(書き込むバイト数)がビューのバイト数以下でなければなりません。
返値
なし (undefined)。
例外
TypeError-
元のオブジェクトが
ReadableStreamBYOBRequestでないか、関連するコントローラがないか、関連する内部配列バッファーが存在しないか切り離されている場合に発生します。 また、アクティブな読者がいるときにviewの長さがゼロである場合や、閉じられたストリームで呼び出されたときにゼロでない場合にも発生する可能性があります。 RangeError-
新しい
viewがReadableStreamBYOBRequest.viewのバッキングメモリー領域と一致しない場合に発生します。 例えば、同じバッファー(または移譲されたバージョン)ではない、異なるbyteOffsetを持っている、バッキングビューで利用できるメモリーより大きい、などです。
例
移譲するビューは、 ReadableStreamBYOBRequest.view と同じタイプであり、同じ基盤バッファーとバイトオフセットを保有し、同じかそれ以下のバイト長でなければなりません。
例えば、下記のようにビューとレスポンスを定義します。
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
byobRequest.respondWithNewView(
byobRequest.view.subarray(v.byteOffset, bytesRead),
);
仕様書
| Specification |
|---|
| Streams> # ref-for-rs-byob-request-respond-with-new-view①> |
ブラウザーの互換性
Loading…