21 lines
463 B
JavaScript
21 lines
463 B
JavaScript
class LazyIterableIterator {
|
|
constructor(producer) {
|
|
this.producer = producer;
|
|
}
|
|
[Symbol.iterator]() {
|
|
if (this.it === undefined) {
|
|
this.it = this.producer();
|
|
}
|
|
return this.it;
|
|
}
|
|
next() {
|
|
if (this.it === undefined) {
|
|
this.it = this.producer();
|
|
}
|
|
return this.it.next();
|
|
}
|
|
}
|
|
export function makeLazy(producer) {
|
|
return new LazyIterableIterator(producer);
|
|
}
|