MuxAsyncIterator
import { MuxAsyncIterator } from "jsr:@ende/async";class
class MuxAsyncIterator<T> implements AsyncIterable<T>Multiplexes multiple async iterators into a single stream. It currently makes an assumption that the final result (the value returned and not yielded from the iterator) does not matter; if there is any result, it is discarded.
Example: Usage
import { MuxAsyncIterator } from "@ende/async/mux-async-iterator";
import { assertEquals } from "@ende/assert";
async function* gen123(): AsyncIterableIterator<number> {
yield 1;
yield 2;
yield 3;
}
async function* gen456(): AsyncIterableIterator<number> {
yield 4;
yield 5;
yield 6;
}
const mux = new MuxAsyncIterator<number>();
mux.add(gen123());
mux.add(gen456());
const result = await Array.fromAsync(mux);
assertEquals(result, [1, 4, 2, 5, 3, 6]);
Methods
add
add(iterable: AsyncIterable<T>): voidAdd an async iterable to the stream.
iterable: AsyncIterable<T>The async iterable to add.
Example: Usage
import { MuxAsyncIterator } from "@ende/async/mux-async-iterator";
import { assertEquals } from "@ende/assert";
async function* gen123(): AsyncIterableIterator<number> {
yield 1;
yield 2;
yield 3;
}
const mux = new MuxAsyncIterator<number>();
mux.add(gen123());
const result = await Array.fromAsync(mux.iterate());
assertEquals(result, [1, 2, 3]);
iterate
iterate(): AsyncIterableIterator<T>Returns an async iterator of the stream.
Returns
the async iterator for all the added async iterables.
Example: Usage
import { MuxAsyncIterator } from "@ende/async/mux-async-iterator";
import { assertEquals } from "@ende/assert";
async function* gen123(): AsyncIterableIterator<number> {
yield 1;
yield 2;
yield 3;
}
const mux = new MuxAsyncIterator<number>();
mux.add(gen123());
const result = await Array.fromAsync(mux.iterate());
assertEquals(result, [1, 2, 3]);
[Symbol.asyncIterator]
[Symbol.asyncIterator](): AsyncIterator<T>Implements an async iterator for the stream.
Returns
the async iterator for all the added async iterables.
Example: Usage
import { MuxAsyncIterator } from "@ende/async/mux-async-iterator";
import { assertEquals } from "@ende/assert";
async function* gen123(): AsyncIterableIterator<number> {
yield 1;
yield 2;
yield 3;
}
const mux = new MuxAsyncIterator<number>();
mux.add(gen123());
const result = await Array.fromAsync(mux);
assertEquals(result, [1, 2, 3]);