ReadableStreamDefaultReader

ReadableStreamDefaultReaderストリーム API のインターフェイスで、ネットワークから提供されたストリームデータ(フェッチリクエストなど)を読み取るために使用できる既定のリーダーを表します。

ReadableStreamDefaultReader は、任意の種類の基盤ソースを持つ ReadableStream からの読み取りに使用することができます(基盤バイトソースを持つ読み取り可能なストリームにのみ使用することができる ReadableStreamBYOBReader とは異なります)。

ただし、基盤ソースからのゼロコピー移譲は、バッファーを自動割り当てするバイトソースにのみ対応していることに注意してください。 言い換えれば、ストリームは構築時に、type="bytes"autoAllocateChunkSize の両方が指定されたものでなければなりません。他にも基盤ソースがある場合、ストリームは常に内部キューからのデータで読み取りリクエストを満たします。

コンストラクター

ReadableStreamDefaultReader()

ReadableStreamDefaultReader オブジェクトのインスタンスを作成して返します。

インスタンスプロパティ

ReadableStreamDefaultReader.closed 読取専用

ストリーミングプロセスの終了に応答するコードを記述できます。 ストリームが閉じられた場合、またはリーダーのロックが解除された場合に履行されるプロミスを返します。 ストリームがエラーの場合は拒否されます。

インスタンスメソッド

ReadableStreamDefaultReader.cancel()

ストリームをキャンセルし、コンシューマーがストリームに興味を失ったことを通知します。 提供された引数 reason は、基盤ソースに与えられ、使用する場合もしない場合もあります。

ReadableStreamDefaultReader.read()

ストリームの内部キュー内の次のチャンクへのアクセスを提供するプロミスを返します。

ReadableStreamDefaultReader.releaseLock()

ストリームのリーダーのロックを解除します。

次の例では、別のリソースから取得した HTML の断片をブラウザーにストリーミングするために、人工的な Response を作成します。

これは Uint8Array と組み合わせた ReadableStream の使用方法を示します。

js
fetch("https://www.example.org/").then((response) => {
  const reader = response.body.getReader();
  const stream = new ReadableStream({
    start(controller) {
      // 次の関数は各データチャンクを処理します
      function push() {
        // done は Boolean で、value は Uint8Array です
        return reader.read().then(({ done, value }) => {
          // 読み取るデータはもうありませんか?
          if (done) {
            // データの送信が完了したことをブラウザーに伝えます
            controller.close();
            return;
          }

          // データを取得し、コントローラー経由でブラウザーに送信します
          controller.enqueue(value);
          push();
        });
      }

      push();
    },
  });

  return new Response(stream, { headers: { "Content-Type": "text/html" } });
});

仕様書

Specification
Streams
# default-reader-class

ブラウザーの互換性

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
ReadableStreamDefaultReader
ReadableStreamDefaultReader() constructor
cancel
closed
read
releaseLock
releaseLock() rejects pending read requests

Legend

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

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.
Has more compatibility info.

関r根情報