close()

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Open source

close()

The close() method of the ReadableStreamDefaultController interface closes the associated stream.

Readers can still read any previously enqueued chunks from the stream. Once those chunks are read, the stream closes, and no more data is available.

Exceptions

ExceptionDescription
TypeErrorThrown when the source object is not a ReadableStreamDefaultController.

Example

JavaScript
import { ReadableStream } from 'k6/experimental/streams';
import { setTimeout } from 'k6/timers';

export default async function () {
  let currentNumber = 0;

  const stream = new ReadableStream({
    start(controller) {
      const fn = () => {
        if (currentNumber % 8 == 0) {
          // Close the stream when the number is divisible by 8
          controller.close();
          return;
        }

        if (currentNumber < 10) {
          controller.enqueue(++currentNumber);
          setTimeout(fn, 1000);
          return;
        }

        controller.close();
      };
      setTimeout(fn, 1000);
    },
  });

  const reader = stream.getReader();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    console.log(`received number ${value} from stream`);
  }
}