UNPKG

axax

Version:

A library of async iterator extensions for JavaScript including ```map```, ```reduce```, ```filter```, ```flatMap```, ```pipe``` and [more](https://github.com/jamiemccrindle/axax/blob/master/docs/API.md#functions).

40 lines (39 loc) 1.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const subject_1 = require("./subject"); const toCallbacks_1 = require("./toCallbacks"); /** * Merges iterables * * @param sources the iterables to merge */ function merge(...sources) { const subject = new subject_1.Subject(); let done = false; subject.finally(() => { done = true; }); let doneCount = 0; sources.map(source => { return toCallbacks_1.toCallbacks(result => { if (result.done) { doneCount += 1; if (doneCount >= sources.length) { done = true; return subject.callback(result); } } if (done) { throw new toCallbacks_1.StopError(); } else if (!result.done) { return subject.callback(result); } else { return Promise.resolve(); } })(source); }); return subject.iterator; } exports.merge = merge;