Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ products:
- workers
---

import { TypeScriptExample } from "~/components";

## Background

A `ReadableStream` is returned by the `readable` property inside [`TransformStream`](/workers/runtime-apis/streams/transformstream/).
Expand All @@ -28,6 +30,10 @@ A `ReadableStream` is returned by the `readable` property inside [`TransformStre

* Pipes the readable stream to a given writable stream `destination` and returns a promise that is fulfilled when the `write` operation succeeds or rejects it if the operation fails.

* <code>pipeThrough(transformStream, optionsPipeToOptions)</code> : ReadableStream

* Pipes the readable stream to the writable side of a given [`TransformStream`](/workers/runtime-apis/streams/transformstream/) and returns the transform's readable side, so that calls can be chained. `options` accepts the same values as `pipeTo()`.

* <code>getReader(optionsObject)</code> : ReadableStreamDefaultReader

* Gets an instance of `ReadableStreamDefaultReader` and locks the `ReadableStream` to that reader instance. This method accepts an object argument indicating options. The only supported option is `mode`, which can be set to `byob` to create a [`ReadableStreamBYOBReader`](/workers/runtime-apis/streams/readablestreambyobreader/), as shown here:
Expand All @@ -36,6 +42,28 @@ A `ReadableStream` is returned by the `readable` property inside [`TransformStre
let reader = readable.getReader({ mode: 'byob' });
```

* <code>cancel(reasonstringoptional)</code> : Promise\<void>

* Cancels the stream. `reason` is an optional human-readable string indicating the reason for cancellation. `reason` will be passed to the underlying source’s cancel algorithm. Any data not yet read is lost.

* `tee()` : \[ReadableStream, ReadableStream]

* Locks the stream and returns an array of two new `ReadableStream` instances, each of which reads the same data as the original stream. Backpressure to the underlying source follows the branch with the most unread data, which avoids unbounded buffering when one branch reads more slowly than the other, as long as the underlying source responds to backpressure. Refer to [workerd's streams documentation](https://github.com/cloudflare/workerd/blob/main/src/workerd/api/streams/README.md#tee-behavior) for implementation details.

* <code>values(optionsObject)</code> : AsyncIterableIterator

* Returns an async iterator that reads and consumes the chunks of the stream. This method accepts an object argument indicating options. The only supported option is `preventCancel`, which, when `true`, prevents the stream from being canceled when the iterator exits early (for example, from a `break` statement). A `ReadableStream` is also async iterable directly:

<TypeScriptExample>

```ts
for await (const chunk of readable) {
console.log(chunk);
}
```

</TypeScriptExample>



### `PipeToOptions`
Expand All @@ -50,6 +78,25 @@ let reader = readable.getReader({ mode: 'byob' });

* When `true`, errors in the source `ReadableStream` will no longer abort the destination `WritableStream`. `pipeTo` will return a rejected promise with the error from the source or any error that occurred while aborting the destination.

## Static methods

* <code>ReadableStream.from(asyncIterable)</code> : ReadableStream

* Creates a new `ReadableStream` whose chunks are the values yielded by `asyncIterable`, which may be any iterable or async iterable, including an async generator.

<TypeScriptExample>

```ts
const stream = ReadableStream.from(
(async function* () {
yield 'hello ';
yield 'world';
})()
);
```

</TypeScriptExample>

***

## Related resources
Expand Down