Skip to main content
Deno 2 is finally here 🎉️
Learn more
Go to Latest
The Standard Library has been moved to JSR. See the blog post for details.
function readableStreamFromIterable
Deprecated
Deprecated

(will be removed after 0.196.0) Use ReadableStream.from instead.

Create a ReadableStream from any kind of iterable.

import { readableStreamFromIterable } from "https://deno.land/std@0.199.0/streams/readable_stream_from_iterable.ts";

const r1 = readableStreamFromIterable(["foo, bar, baz"]);
const r2 = readableStreamFromIterable(async function* () {
await new Promise(((r) => setTimeout(r, 1000)));
yield "foo";
await new Promise(((r) => setTimeout(r, 1000)));
yield "bar";
await new Promise(((r) => setTimeout(r, 1000)));
yield "baz";
}());

If the produced iterator (iterable[Symbol.asyncIterator]() or iterable[Symbol.iterator]()) is a generator, or more specifically is found to have a .throw() method on it, that will be called upon readableStream.cancel(). This is the case for the second input type above:

import { readableStreamFromIterable } from "https://deno.land/std@0.199.0/streams/readable_stream_from_iterable.ts";

const r3 = readableStreamFromIterable(async function* () {
try {
yield "foo";
} catch (error) {
console.log(error); // Error: Cancelled by consumer.
}
}());
const reader = r3.getReader();
console.log(await reader.read()); // { value: "foo", done: false }
await reader.cancel(new Error("Cancelled by consumer."));
import { readableStreamFromIterable } from "https://deno.land/std@0.199.0/streams/mod.ts";

Parameters

iterable: Iterable<T> | AsyncIterable<T>