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

(will be removed after 0.169.0) Import from std/streams/readable_stream_from_iterable.ts instead.

reate a ReadableStream from any kind of iterable.

import { readableStreamFromIterable } from "https://deno.land/std@0.170.0/streams/conversion.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.170.0/streams/conversion.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.170.0/streams/conversion.ts";