Aggregates several async iterators into one (zip)
npm install aggregate-async-iterator










Aggregates several async iterators into one (zip)
``js
import { aggregateRoundRobin, aggregateFifo } from "aggregate-async-iterator";
async function* sequence(name, time = 100, num = 10) {
for (let i = 0; i < num; i += 1) {
yield new Promise(resolve => setTimeout(resolve(name + i), time));
}
}
console.log("RR:");
for await (const r of aggregateRoundRobin([
sequence("A", 100, 3),
sequence("B", 35, 5)
])) {
console.log(r);
}
console.log("FIFO:");
for await (const r of aggregateFifo([
sequence("A", 100, 3),
sequence("B", 35, 5)
])) {
console.log(r);
}
`
Prints interleaved sequences
`txt`
RR:
A0
B0
A1
B1
A2
B2
B3
B4
FIFO:
A0
B0
A1
B1
A2
B2
B3
B4
* aggregateFifo
* Parameters
* aggregateRoundRobin
* Parameters
Aggregate items from sevaral async iterators into one.
Items are collected first in first out from the sources.
Whatever source comes first will be delivered first.
* sources Array\
Returns AsyncIterable\
Aggregate items from sevaral async iterators into one.
Items are collected round robin from the sources.
The 2nd. round of items will only be delivered after all sources
have delivered their 1st. round (or reached their end).
* sources Array\
Returns AsyncIterable\
With npm do:
`shell``
npm install aggregate-async-iterator
BSD-2-Clause