Draft
This page is not complete.
This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The ReadableStreamDefaultController()
constructor creates and returns a ReadableStreamDefaultController()
object instance.
Note: You wouldn't use this constructor manually — this is used during the construction of a ReadableStream
object.
Syntax
var readableStreamController = new ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark);
Parameters
- stream
- The
ReadableStream
to be controlled. - underlyingSource
- An object containing methods and properties that define how the constructed stream instance will behave. See the
ReadableStream()
constructor's parameters definitions for more information. - size
- A method containing a parameter
chunk
— this indicates the size to use for each chunk, in bytes. - highWaterMark
- A non-negative integer — this defines the total number of chunks that can be contained in the internal queue before backpressure is applied.
Return value
An instance of the ReadableStreamDefaultController
object.
Exceptions
- TypeError
- The supplied
stream
parameter is not aReadableStream
, or it already has an associated controller.
Examples
In the following simple example, a custom ReadableStream
is created using a constructor (see our Simple random stream example for the full code). The start()
function generates a random string of text every second and enqueues it into the stream. A cancel()
function is also provided to stop the generation if ReadableStream.cancel()
is called for any reason.
Note that a ReadableStreamDefaultController
object is provided as the parameter of the start()
and pull()
functions.
When a button is pressed, the generation is stopped, the stream is closed using ReadableStreamDefaultController.close()
, and another function is run, which reads the data back out of the stream.
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', function() { 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 | Status | Comment |
---|---|---|
Streams The definition of 'ReadableStreamDefaultController()' in that specification. |
Living Standard | Initial definition. |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
No compatibility data found. Please contribute data for "path.to.feature.NameOfTheConstructor" (depth: 1) to the MDN compatibility data repository.