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 がある場合、ストリームはエラーになります。
構文
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> # ref-for-rbs-controller-close①> |
ブラウザーの互換性
Loading…