ReadableByteStreamController: byobRequest プロパティ
byobRequest
は ReadableByteStreamController
インターフェイスの読み取り専用プロパティで、現在の BYOB リクエストを返します。保留中のリクエストがない場合は null
を返します。
基盤となるバイトソースはこのプロパティを調べ、存在する場合はそれを使用してストリームにデータを書き込む必要があります(ReadableByteStreamController.enqueue()
を使用するのではなく)。
こうすることで、コンシューマーへのデータの効率的なゼロバイト移譲が実現します。
値
ReadableStreamBYOBRequest
オブジェクトのインスタンス、または null
。
例
読み取り可能なバイトストリームの使用 > 読み取り可能なソケットプッシュバイトストリームの作成の例では、 byobRequest
を使用して(データが存在する場合は)データを移譲するか、 ReadableByteStreamController.enqueue()
を使用してストリーム内部のキューにデータをコピーする方法を示しています。
関連するコードを下記に示します。
byobRequest
が存在すれば、 controller.byobRequest.view
にデータが読み込まれ、 ReadableStreamBYOBRequest.respond()
が呼び出されて、移譲可能なデータ量を指示します。
js
if (controller.byobRequest) {
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
if (bytesRead === 0) {
controller.close();
}
controller.byobRequest.respond(bytesRead);
} else {
// Write to data using enqueue().
}
仕様書
Specification |
---|
Streams Standard # ref-for-rbs-controller-byob-request② |
ブラウザーの互換性
BCD tables only load in the browser