UNPKG

iter-tools-es

Version:
36 lines (32 loc) 868 B
const { asyncIterableCurry } = require('../../internal/async-iterable.js'); const { raceTo } = require('./internal/race-to.js'); async function* __asyncInterleaveReady(sources) { const iterators = sources.map(iterable => iterable[Symbol.asyncIterator]()); const stepPromises = iterators.map((iter, idx) => iter.next().then(step => ({ idx, step }))); let ready; while ((ready = await raceTo(({ step }) => !step.done, null, stepPromises)) !== null) { const { idx, step } = ready; yield step.value; stepPromises[idx] = iterators[idx].next().then(step => ({ idx, step })); } } exports.__asyncInterleaveReady = __asyncInterleaveReady; const asyncInterleaveReady = /*#__PURE__*/asyncIterableCurry(__asyncInterleaveReady, { variadic: true }); exports.asyncInterleaveReady = asyncInterleaveReady;