ReadableStreamDefaultController: close() method
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Note: This feature is available inWeb Workers.
Theclose() method of theReadableStreamDefaultController interface closes the associated stream.
Readers will still be able to read any previously-enqueued chunks from the stream, but once those are read, the stream will become closed. If you want to completely get rid of the stream and discard any enqueued chunks, you'd useReadableStream.cancel() orReadableStreamDefaultReader.cancel().
In this article
Syntax
close()Parameters
None.
Return value
None (undefined).
Exceptions
TypeErrorThrown if
close()is called when the stream is not readable — because it is already closed, cancelled, or errored — or because it has been requested to close by the underlying source but it has not yet done so because there are still enqueued chunks to read.
Examples
In the following simple example, a customReadableStream is created using a constructor (see ourSimple random stream example for the full code). Thestart() function generates a random string of text every second and enqueues it into the stream.Acancel() function is also provided to stop the generation ifReadableStream.cancel() is called for any reason.
When a button is pressed, the generation is stopped, the stream is closed usingclose(), and another function is run, which reads the data back out of the stream.
let interval;const stream = new ReadableStream({ start(controller) { interval = setInterval(() => { let string = randomChars(); // Add the string to the stream controller.enqueue(string); // show it on the screen let listItem = document.createElement("li"); listItem.textContent = string; list1.appendChild(listItem); }, 1000); button.addEventListener("click", () => { clearInterval(interval); fetchStream(); controller.close(); }); }, pull(controller) { // We don't really need a pull in this example }, cancel() { // This is called if the reader cancels, // so we should stop generating strings clearInterval(interval); },});Specifications
| Specification |
|---|
| Streams> # ref-for-rs-default-controller-close①> |