Function handleAsynchronousIterable

  • Takes a generator for iterables, then a generator for async iterables and last an iterable, using the proper generator automatically.

    Example

    const handle = handleCurriedAsynchronousIterable(
    iterable => function* () {
    yield* iterable;
    }
    )(
    iterable => async function* () {
    yield* iterable;
    }
    );

    handle(nonAsyncIterable); // IterableIterator
    handle(asyncIterable); // AsyncIterableIterator

    Returns

    Curried function with iterator in context.

    Type Parameters

    • Item = unknown

    • Output = unknown

    Parameters

    • iterator: ((iterable: Iterable<Item>) => (() => Generator<Output, void, void>))

      Function to be used with non async iterables.

        • (iterable: Iterable<Item>): (() => Generator<Output, void, void>)
        • Parameters

          • iterable: Iterable<Item>

          Returns (() => Generator<Output, void, void>)

            • (): Generator<Output, void, void>
            • Returns Generator<Output, void, void>

    Returns ((asyncIterator: ((iterable: AsyncIterable<Item>) => (() => AsyncGenerator<Output, void, void>))) => (<Iterable>(iterable: Iterable) => Iterable extends AsyncIterable<Item> ? AsyncIterableIterator<Output> : IterableIterator<Output>))

      • (asyncIterator: ((iterable: AsyncIterable<Item>) => (() => AsyncGenerator<Output, void, void>))): (<Iterable>(iterable: Iterable) => Iterable extends AsyncIterable<Item> ? AsyncIterableIterator<Output> : IterableIterator<Output>)
      • Parameters

        • asyncIterator: ((iterable: AsyncIterable<Item>) => (() => AsyncGenerator<Output, void, void>))
            • (iterable: AsyncIterable<Item>): (() => AsyncGenerator<Output, void, void>)
            • Parameters

              • iterable: AsyncIterable<Item>

              Returns (() => AsyncGenerator<Output, void, void>)

                • (): AsyncGenerator<Output, void, void>
                • Returns AsyncGenerator<Output, void, void>

        Returns (<Iterable>(iterable: Iterable) => Iterable extends AsyncIterable<Item> ? AsyncIterableIterator<Output> : IterableIterator<Output>)

          • <Iterable>(iterable: Iterable): Iterable extends AsyncIterable<Item> ? AsyncIterableIterator<Output> : IterableIterator<Output>
          • Type Parameters

            • Iterable extends AsynchronousIterable<Item>

            Parameters

            • iterable: Iterable

            Returns Iterable extends AsyncIterable<Item> ? AsyncIterableIterator<Output> : IterableIterator<Output>