ReadableByteStreamController: close() メソッド

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

メモ: この機能はウェブワーカー内で利用可能です。

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
# ref-for-rbs-controller-close①

ブラウザーの互換性

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
close

Legend

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

Full support
Full support
No support
No support

関連情報