iteragain
Version:
Javascript Iterable/Iterator/Generator-function utilities.
23 lines • 676 B
JavaScript
export class RoundrobinIterator {
constructor(iterators) {
this.iterators = iterators;
this.i = 0;
}
[Symbol.iterator]() {
return this;
}
next(...args) {
if (!this.iterators.length)
return { done: true, value: undefined };
const next = this.iterators[this.i].next(...args);
if (next.done) {
this.iterators.splice(this.i, 1);
this.i %= this.iterators.length;
return this.next(...args);
}
this.i = (this.i + 1) % this.iterators.length;
return next;
}
}
export default RoundrobinIterator;
//# sourceMappingURL=RoundrobinIterator.js.map