ReadableStreamDefaultController

ReadableStreamDefaultControllerストリーム API のインターフェイスで、ReadableStream の状態と内部キューを制御できるコントローラーを表します。既定のコントローラーは、バイトストリームではないストリーム用のものです。

コンストラクター

なし。 ReadableStreamDefaultController インスタンスは、ReadableStream の構築中に自動的に作成されます。

インスタンスプロパティ

ReadableStreamDefaultController.desiredSize 読取専用

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

インスタンスメソッド

ReadableStreamDefaultController.close()

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

ReadableStreamDefaultController.enqueue()

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

ReadableStreamDefaultController.error()

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

次の単純な例では、コンストラクターを使用してカスタムの ReadableStream を作成します(完全なコードについては、単純なランダムストリームの例を参照)。 start() 関数は、1 秒ごとにテキストのランダムな文字列を生成し、それをストリームのキューに入れます。 ReadableStream.cancel() が何らかの理由で呼び出された場合、生成を停止するための cancel() 関数も提供します。

ReadableStreamDefaultController オブジェクトは、 start() 関数および pull() 関数の引数として提供されることに注意してください。

ボタンが押されると、生成を停止し、 ReadableStreamDefaultController.close() を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。

js
let interval;
const stream = new ReadableStream({
  start(controller) {
    interval = setInterval(() => {
      let string = randomChars();

      // ストリームに文字列を追加
      controller.enqueue(string);

      // それを画面に表示
      let listItem = document.createElement("li");
      listItem.textContent = string;
      list1.appendChild(listItem);
    }, 1000);

    button.addEventListener("click", () => {
      clearInterval(interval);
      fetchStream();
      controller.close();
    });
  },
  pull(controller) {
    // この例では実際には pull は必要ありません
  },
  cancel() {
    // リーダーがキャンセルされた場合に呼び出されるため、
    // 文字列の生成を停止する必要があります
    clearInterval(interval);
  },
});

仕様書

Specification
Streams Standard
# rs-default-controller-class

ブラウザーの互換性

BCD tables only load in the browser

関連情報