Given the provided (very simple) generator, is it possible to return the generator back to its original state to use again?
var generator = function*() {
I think this is not a concern of a generator, but of an iterator – which actually 'does the labour'. To reset an iteration you just need to create a new iterator. I would probably use a dumb higher order function like this:
function *foo() {
yield 1;
yield 2;
yield 3;
}
const iterateFromStart = (func) => {
// every invocation creates a brand new iterator
const iterator = func();
for (let val of iterator) {
console.log(val)
}
}
iterateFromStart(foo); // 1 2 3
iterateFromStart(foo); // 1 2 3