Files
Exponent GitHub Bot e3f6a67ce5 Initial commit
fbshipit-source-id: 04f171ad7fc354fbc437cd07abdee445323d9a0f
2018-07-17 18:51:11 +00:00

27 lines
618 B
JavaScript

// @flow
import { $$asyncIterator } from 'iterall';
export default function mergeAsyncIterators(...iterators: Array<AsyncIterator>) {
const promises = iterators.map(() => null);
return {
async next() {
for (let i = 0; i < promises.length; i++) {
if (!promises[i]) {
promises[i] = iterators[i].next();
}
}
const [i, result] = await Promise.race(promises.map(async (value, i) => [i, await value]));
promises[i] = null;
return {
done: false,
value: result.value,
};
},
[$$asyncIterator]() {
return this;
},
};
}