ReadableStreamDefaultController.enqueue()

Draft
This page is not complete.

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The enqueue() method of the ReadableStreamDefaultController interface enqueues a given chunk in the associated stream.

Syntax

readableStreamDefaultControllerInstance.enqueue(chunk);

Parameters

chunk
The chunk to enqueue.

Return value

Void.

Exceptions

TypeError
The source object is not a ReadableStreamDefaultController.

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 — see controller.enqueue(string). A cancel() function is also provided to stop the generation if ReadableStream.cancel() is called for any reason.

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 'enqueue()' in that specification.
Living Standard Initial definition.

Browser compatibility

No compatibility data found. Please contribute data for "path.to.feature.NameOfTheProperty" (depth: 1) to the MDN compatibility data repository.

Document Tags and Contributors

 Contributors to this page: chrisdavidmills
 Last updated by: chrisdavidmills,