このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ReadableStreamDefaultController: close() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2020年1月⁩.

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

リーダーは、以前にキューに入れられたチャンクをストリームから読み取ることができますが、それらを読み取とってしまうとストリームは閉じられます。 ストリームを完全に取り除き、キューに入れられたチャンクを破棄する場合は、ReadableStream.cancel() または ReadableStreamDefaultReader.cancel() を使用してください。

構文

js
close() 

引数

なし。

返値

なし (undefined)。

例外

TypeError

ソースオブジェクトは ReadableStreamDefaultController ではありません。

次の単純な例では、コンストラクターを使用してカスタムの ReadableStream を作成します(完全なコードについては、単純なランダムストリームの例を参照)。 start() 関数は、1 秒ごとにテキストのランダムな文字列を生成し、それをストリームのキューに入れます。 ReadableStream.cancel() が何らかの理由で呼び出された場合、生成を停止するための cancel() 関数も提供します。

ボタンが押されると、生成を停止し、ReadableStreamDefaultController.close() を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。

js
let interval; const stream = new ReadableStream({ start(controller) { interval = setInterval(() => { let string = randomChars(); // ストリームに文字列を追加 controller.enqueue(string); // それを画面に表示 let listItem = document.createElement("li"); listItem.textContent = string; list1.appendChild(listItem); }, 1000); button.addEventListener("click", () => { clearInterval(interval); fetchStream(); controller.close(); }); }, pull(controller) { // この例では実際には pull は必要ありません }, cancel() { // リーダーがキャンセルされた場合に呼び出されるため、 // 文字列の生成を停止する必要があります clearInterval(interval); }, }); 

仕様書

Specification
Streams
# ref-for-rs-default-controller-close①

ブラウザーの互換性

関連情報