iteragain
Version:
Javascript Iterable/Iterator/Generator-function utilities.
27 lines • 835 B
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoundrobinIterator = void 0;
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;
}
}
exports.RoundrobinIterator = RoundrobinIterator;
exports.default = RoundrobinIterator;
//# sourceMappingURL=RoundrobinIterator.js.map