Skip to main content
Using Deno in production at your company? Earn free Deno merch.
Give us feedback
Go to Latest
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.196.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.196.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.196.0/streams/readable_stream_from_iterable.ts";

Parameters

iterable: Iterable<T> | AsyncIterable<T>