ReadableByteStreamController: close() メソッド

close()ReadableByteStreamController インターフェイスのメソッドで、関連するストリームを閉じます。

これは、そのデータソースが使い果たされたとき/完全に完了したときに、基盤ソースによって呼び出される可能性があります。

メモ: リーダーは、以前にキューに入れられたチャンクをストリームから読み取ることができますが、それらを読み取ってしまうとストリームは閉じられます。 しかし、 close() が呼び出されたときに、未処理で部分的に書き込まれた byobRequest がある場合、ストリームはエラーになります。

構文

js
close()

引数

なし。

返値

なし (undefined)。

例外

TypeError

ソースオブジェクトが ReadableByteStreamController ではないか、何らかの理由でストリームが読み取り可能ではありません。

読み取り可能なバイトストリームの使用 > 読み取り可能なソケットプッシュバイトストリームの作成の例で、データがなくなったときにストリームを閉じています。

関連するコードを下記に示します。 これは readInto() メソッドがデータがまだないときだけ 0 バイトを返すと仮定しています。

js
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
if (bytesRead === 0) {
  controller.close();
}

closeを呼び出すと、ストリームは閉じられ、コンシューマーがあれば通知されます。 例えば ReadableStreamBYOBReader を使用している場合、 read() リクエストは done: true で解決され、 ReadableStreamBYOBReader.closed からのプロミスも解決されます。

仕様書

Specification
Streams Standard
# ref-for-rbs-controller-close①

ブラウザーの互換性

BCD tables only load in the browser

関連情報