ReadableStreamDefaultController: enqueue() メソッド

enqueue()ReadableStreamDefaultController インターフェイスのメソッドで、受け取ったのチャンクを関連するストリームのキューに入れます。

構文

js
enqueue(chunk)

引数

chunk

キューに入れるチャンク。

返値

なし (undefined)。

例外

TypeError

ソースオブジェクトが ReadableStreamDefaultController ではありません。

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

ボタンが押されると、生成を停止し、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
# ref-for-rs-default-controller-enqueue①

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
enqueue

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報