为什么我的生成器在迭代后变空了?

2024-02-18

我有一个生成器通过我正在使用的库的函数调用返回给我。然后,我将此生成器传递给一个函数,该函数迭代它并对每个项目执行一系列逻辑。然后我想在调用该函数后引用同一个生成器。然而,生成器似乎不再拥有/生成任何物品。代码是这样的:

let myGenerator = this.generatorFunc();
console.log(Array.from(myGenerator).length); //prints N which is specified elsewhere
this.iterateThroughGenerator(myGenerator);
console.log(Array.from(myGenerator).length); //now prints 0 when I need it to be N still

iterateThroughGenerator(generator) {
    for(let element of generator) {
        // do a bunch of stuff with element
    }
}

这就是迭代器的工作原理。调用生成器会返回一个迭代器,该迭代器可以迭代一次。这在大多数其他语言中都是一样的。

let generator = function* () {
  for (let i = 0; i < 3; i++) 
    yield i;
};

let iterator = generator();

console.log(Array.from(iterator)); // [1...3]
console.log(Array.from(iterator)); // []

console.log(Array.from(generator())); // [1..3]
console.log(Array.from(generator())); // [1..3]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的生成器在迭代后变空了? 的相关文章

随机推荐