ReadableByteStreamController

ReadableByteStreamControllerストリーム API のインターフェイスで、読み取り可能なバイトストリームコントローラーを表します。 これは、基礎となるバイトソースを持つ ReadableStream の状態と内部キューを制御し、ストリームの内部キューが空の場合に、基礎となるソースからコンシューマーへの効率的なゼロコピーデータ移譲を可能にします。

このコントローラ型のインスタンスは、 underlyingSource オブジェクトに type="bytes" プロパティを設定して ReadableStream() コンストラクターの引数として渡された場合に作成されます。 underlyingSource オブジェクトは start() および pull() コールバック関数を定義することもできます。 これらは、コントローラーを引数として呼び出され、 基盤となるソースを設定し、必要に応じてデータをリクエストします。

基盤となるソースは、コントローラーを使用して byobRequest プロパティまたは enqueue() メソッドでストリームにデータを供給します。 byobRequestReadableStreamBYOBRequest オブジェクトで、コンシューマーから直接コンシューマーにゼロコピーでデータを移譲するための待機リクエストを表します。 データが存在する場合は、byobRequest を使用してデータをコピーする必要があります(この場合は enqueue() を使用しないでください)。 基盤となるソースがストリームにデータを渡す必要があり、 byobRequestnull の場合、ソースは enqueue() を呼び出して、ストリーム内部のキューにデータを追加することができます。

byobRequest は、リーダーからのリクエストがあり、ストリームの内部キューが空の場合にのみ、「BYOB モード」で作成されることに注意してください。 「BYOB モード」は、 ReadableStreamBYOBReader (通常、 ReadableStream.getReader() を引数 { mode: 'byob' } で呼び出すことで構築されます)を使用している場合に有効になります。 既定値でリーダーを使用し、 autoAllocateChunkSizeReadableController() コンストラクター で指定されている場合にも有効になります。

基盤となるバイトソースは、コントローラーを使用して、すべてのデータが送信されたときにストリームを閉じたり (close())、 error() を使用して基盤となるソースからエラーを報告したりすることもできます。 コントローラーの desiredSize プロパティを使用して「背圧」をかけ、基盤となるソースに内部キューのサイズを通知します(値が小さいと、キューがいっぱいになっていることを示し、基盤となるソースに流入を一時停止またはスロットルすることが望ましいことを示唆します)。

たとえコントローラーが主に基盤となるバイトソースによって使用されるとしても、ストリームの指示のためにシステムの他の部分によって格納することができない理由はないことに注意してください。

コンストラクター

なし。 ReadableByteStreamController インスタンスは、 underlyingSourcetype="bytes" プロパティが設定されたものが ReadableStream() コンストラクターに渡された場合、自動的に作成されます。

インスタンスプロパティ

ReadableByteStreamController.byobRequest 読取専用

現在の BYOB プルリクエストを返します。未処理のリクエストがない場合は null となります。

ReadableByteStreamController.desiredSize 読取専用

ストリームの内部キューを満たすために必要な希望サイズを返します。

インスタンスメソッド

ReadableByteStreamController.close()

関連するストリームを閉じます。

ReadableByteStreamController.enqueue()

所与のチャンクを関連するストリームのキューに入れます。

ReadableByteStreamController.error()

関連するストリームとの今後のやり取りでエラーが発生します。

コントローラーは、データを移譲またはエンキューしたり、ストリームにデータがない(閉じられた)またはエラーとされていたことを指示するために、基盤となるソースによって使用されます。また、 desiredSize を使用して、希望するデータレートの「上流」から基盤ソースに指示するためにも使用します。

読み取り可能なバイトストリームの使用の例、特に読み取り可能なソケットプッシュバイトストリームの作成がこれらのほとんどの場合を示します。

仕様書

Specification
Streams Standard
# rbs-controller-class

ブラウザーの互換性

BCD tables only load in the browser

関連情報