JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1279
  • Score
    100M100P100Q111508F
  • License MIT

merges async iterators

Package Exports

  • mergeiterator

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mergeiterator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

mergeiterator

Merges async iterators.

NPM version Build Status Coverage Status

Merges list of async or sync iterables into async one.

It accepts any iterable like arrays, generators, async generators or even promises which resolve to iterables. Any iterator can be infinite, including the list of iterables itself.

import merge from "mergeiterator"

async function DoIt() {
    for await (const v of merge([
        [1, 2, Promise.resolve(3)],
        Promise.resolve([4, 5]),
        (function*() {
            let i = 9
            while (true) {
                yield i++
                yield Promise.resolve(i++)
            }
        })(),
        (async function*() {
            yield 6
            yield await Promise.resolve(7)
            yield Promise.resolve(8)
        })(),
    ])) {
        console.log(v)
    }
}

// 1 4 2 9 5 3 10 6 11 7 12 8 13 14 15 16 17 18 19 20 ...

This function guarantees, that if some value is yielded by some of iterables, then that value will be eventually yielded. This is basically about infinite iterables. It also guarantees that the order of values within the same iterable is preserved.

If some iterable yields a promise, its value will be used, not a promise itself.

If some iterable throws an error, that error will be redirected to a caller and other iterables will be closed.

Return values of iterables are discarded.

API

merge

Merges async or sync iterables into async one.

Parameters

  • sequences AnyIterable<AnyIterable<T>>

Returns AsyncGenerator<T, any, any>