Is it possible to reset an ECMAScript 6 generator to its initial state?

前端 未结 8 1369
有刺的猬
有刺的猬 2020-12-01 12:19

Given the provided (very simple) generator, is it possible to return the generator back to its original state to use again?

var generator = function*() {
            


        
8条回答
  •  失恋的感觉
    2020-12-01 12:44

    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
    

提交回复
热议问题