ReadableByteStreamController: close() メソッド
メモ: この機能はウェブワーカー内で利用可能です。
close()
は ReadableByteStreamController
インターフェイスのメソッドで、関連するストリームを閉じます。
これは、そのデータソースが使い果たされたとき/完全に完了したときに、基盤ソースによって呼び出される可能性があります。
メモ: リーダーは、以前にキューに入れられたチャンクをストリームから読み取ることができますが、それらを読み取ってしまうとストリームは閉じられます。
しかし、 close()
が呼び出されたときに、未処理で部分的に書き込まれた byobRequest
がある場合、ストリームはエラーになります。
構文
close()
引数
なし。
返値
なし (undefined
)。
例外
TypeError
-
ソースオブジェクトが
ReadableByteStreamController
ではないか、何らかの理由でストリームが読み取り可能ではありません。
例
読み取り可能なバイトストリームの使用 > 読み取り可能なソケットプッシュバイトストリームの作成の例で、データがなくなったときにストリームを閉じています。
関連するコードを下記に示します。
これは readInto()
メソッドがデータがまだないときだけ 0 バイトを返すと仮定しています。
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