在提供的(非常简单的)生成器中,是否可以将生成器返回到其原始状态以便再次使用?
var generator = function*() {
yield 1;
yield 2;
yield 3;
};
var iterable = generator();
for (let x of iterable) {
console.log(x);
}
// At this point, iterable is consumed.
// Is there a method for moving iterable back
// to the start point by only without re-calling generator(),
// (or possibly by re-calling generator(), only by using prototype
// or constructor methods available within the iterable object)
// so the following code would work again?
for (let x of iterable) {
console.log(x);
}
我希望能够将可迭代对象传递给其他作用域,在其上进行迭代,进行一些其他操作,然后在同一作用域中稍后再次对其进行迭代。
for (let x in iterable)
不应该是for (let x of iterable)
吗? - Felix Klingfor (let val of iterable) {}
中使用生成器。最终,我创建了自己的包装类,在其上定义了Symbol.iterator
,它会在尝试迭代之前自动展开任何包装的生成器(只要不需要任何参数)。这个方法很好用。但是将生成器视为惰性加载的数据序列并不利于性能。 - dvlsg