Class MuxAsyncIterator<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.

import { MuxAsyncIterator } from "@std/async/mux-async-iterator";
import { assertEquals } from "@std/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]);

Type Parameters

  • T

    The type of the provided async iterables and generated async iterable.

Implements
  • AsyncIterable<T>

Constructors

Methods

  • Implements an async iterator for the stream.

    Returns AsyncIterator<T, any, any>

    the async iterator for all the added async iterables.

    import { MuxAsyncIterator } from "@std/async/mux-async-iterator";
    import { assertEquals } from "@std/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]);
  • Add an async iterable to the stream.

    Parameters

    • iterable: AsyncIterable<T, any, any>

      The async iterable to add.

    Returns void

    import { MuxAsyncIterator } from "@std/async/mux-async-iterator";
    import { assertEquals } from "@std/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]);
  • Returns an async iterator of the stream.

    Returns AsyncIterableIterator<T, any, any>

    the async iterator for all the added async iterables.

    import { MuxAsyncIterator } from "@std/async/mux-async-iterator";
    import { assertEquals } from "@std/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]);