ReadableStreamBYOBRequest: respond() メソッド

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

respond()ReadableStreamBYOBRequest インターフェイスのメソッドで、 ReadableStreamBYOBRequest.view に指定したバイト数が書き込まれたことを、関連する読み取り可能なバイトストリームに通知するために用いられます。

このメソッドが呼び出された後、 view は移譲され、変更できなくなります。

構文

js
respond(bytesWritten)

引数

bytesWritten

ReadableStreamBYOBRequest.view に書き込まれたバイト数です。

返値

なし (undefined)。

例外

TypeError

リクエストが関連付けられた ReadableByteStreamController を持っていないか、ビューバッファーが切り離されていないか、移譲できません。

下記のコードは読み取り可能なバイトストリームの使用のライブ例から引用しています。

このメソッドは、コンシューマーからの待機中の読み取りリクエストを履行するために、データのゼロコピー移譲を行う一環として、基盤となるバイトソースによって呼び出されます。 基盤となるバイトソースは最初に ReadableStreamBYOBRequest.view にデータを書き込み、次にこの respond() メソッドを呼び出して、バッファーにコピーされたデータの量を示し、データをリーダーに移譲させます。

下記のコードはこの用途を示すもので、データをビューにコピーするために readInto() メソッドを使用しています。

js
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
controller.byobRequest.respond(bytesRead);

処理後、 byobRequest.view は切り離され、リクエストは破棄されます。

仕様書

Specification
Streams Standard
# ref-for-rs-byob-request-respond①

ブラウザーの互換性

BCD tables only load in the browser

関連情報