UNPKG

iter-tools-es

Version:
43 lines (36 loc) 947 B
const { asyncIterableCurry } = require('../../internal/async-iterable.js'); const { __asyncInterleave } = require('../$interleave/async-interleave.js'); const { makeValidateArgs } = require('./internal/validate-args.js'); async function* asyncByPosition({ start, step }, all, ...peekrs) { start = start % peekrs.length; for (let i = start; !all.done; i = (i + step) % peekrs.length) { const peekr = peekrs[i]; if (!peekr.done) { yield peekr.value; await peekr.advance(); } } } function __asyncRoundRobin(sources, step = 1, start = 0) { return __asyncInterleave(sources, asyncByPosition, { start, step }); } exports.__asyncRoundRobin = __asyncRoundRobin; const asyncRoundRobin = /*#__PURE__*/asyncIterableCurry(__asyncRoundRobin, { variadic: true, minArgs: 0, maxArgs: 2, validateArgs: /*#__PURE__*/makeValidateArgs('asyncRoundRobin') }); exports.asyncRoundRobin = asyncRoundRobin;