ReadableByteStreamController
Baseline
2026
Newly available
Since March 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
ReadableByteStreamController はストリーム API のインターフェイスで、読み取り可能なバイトストリームコントローラーを表します。
これは、基礎となるバイトソースを持つ ReadableStream の状態と内部キューを制御し、ストリームの内部キューが空の場合に、基礎となるソースからコンシューマーへの効率的なゼロコピーデータ移譲を可能にします。
このコントローラ型のインスタンスは、 underlyingSource オブジェクトに type="bytes" プロパティを設定して ReadableStream() コンストラクターの引数として渡された場合に作成されます。
underlyingSource オブジェクトは start() および pull() コールバック関数を定義することもできます。
これらは、コントローラーを引数として呼び出され、 基盤となるソースを設定し、必要に応じてデータをリクエストします。
基盤となるソースは、コントローラーを使用して byobRequest プロパティまたは enqueue() メソッドでストリームにデータを供給します。
byobRequest は ReadableStreamBYOBRequest オブジェクトで、コンシューマーから直接コンシューマーにゼロコピーでデータを移譲するための待機リクエストを表します。
データが存在する場合は、byobRequest を使用してデータをコピーする必要があります(この場合は enqueue() を使用しないでください)。
基盤となるソースがストリームにデータを渡す必要があり、 byobRequest が null の場合、ソースは enqueue() を呼び出して、ストリーム内部のキューにデータを追加することができます。
byobRequest は、リーダーからのリクエストがあり、ストリームの内部キューが空の場合にのみ、「BYOB モード」で作成されることに注意してください。
「BYOB モード」は、 ReadableStreamBYOBReader (通常、 ReadableStream.getReader() を引数 { mode: 'byob' } で呼び出すことで構築されます)を使用している場合に有効になります。
既定値でリーダーを使用し、 autoAllocateChunkSize が ReadableController() コンストラクター で指定されている場合にも有効になります。
基盤となるバイトソースは、コントローラーを使用して、すべてのデータが送信されたときにストリームを閉じたり (close())、 error() を使用して基盤となるソースからエラーを報告したりすることもできます。
コントローラーの desiredSize プロパティを使用して「背圧」をかけ、基盤となるソースに内部キューのサイズを通知します(値が小さいと、キューがいっぱいになっていることを示し、基盤となるソースに流入を一時停止またはスロットルすることが望ましいことを示唆します)。
たとえコントローラーが主に基盤となるバイトソースによって使用されるとしても、ストリームの指示のためにシステムの他の部分によって格納することができない理由はないことに注意してください。
コンストラクター
なし。 ReadableByteStreamController インスタンスは、 underlyingSource に type="bytes" プロパティが設定されたものが ReadableStream() コンストラクターに渡された場合、自動的に作成されます。
インスタンスプロパティ
ReadableByteStreamController.byobRequest読取専用-
現在の BYOB プルリクエストを返します。未処理のリクエストがない場合は
nullとなります。 ReadableByteStreamController.desiredSize読取専用-
ストリームの内部キューを満たすために必要な希望サイズを返します。
インスタンスメソッド
ReadableByteStreamController.close()-
関連するストリームを閉じます。
ReadableByteStreamController.enqueue()-
所与のチャンクを関連するストリームのキューに入れます。
ReadableByteStreamController.error()-
関連するストリームとの今後のやり取りでエラーが発生します。
例
コントローラーは、データを移譲またはエンキューしたり、ストリームにデータがない(閉じられた)またはエラーとされていたことを指示するために、基盤となるソースによって使用されます。また、 desiredSize を使用して、希望するデータレートの「上流」から基盤ソースに指示するためにも使用します。
読み取り可能なバイトストリームの使用の例、特に読み取り可能なソケットプッシュバイトストリームの作成がこれらのほとんどの場合を示します。
仕様書
| Specification |
|---|
| Streams> # rbs-controller-class> |
ブラウザーの互換性
関連情報
- ストリーム API の概念
- 読み取り可能なバイトストリームの使用
ReadableStream- WHATWG Stream Visualizer, for a basic visualization of readable, writable, and transform streams.
- Web-streams-polyfill or sd-streams - polyfills