このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ReadableStreamDefaultController

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。

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);
  },
});

仕様書

仕様書
Streams
# rs-default-controller-class

ブラウザーの互換性

関連情報