javascript – 是否可以将ECMAScript 6生成器重置为初始状态?
栏目: JavaScript · 发布时间: 6年前
内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/23848113/is-it-possible-to-reset-an-ecmascript-6-generator-to-its-initial-state
我的问题是:给定提供的(非常简单的)生成器,是否可以将发生器返回到原来的状态再次使用?
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); }
我希望能够将迭代传递给其他范围,迭代它,做一些其他的东西,然后可以在同一范围内再次迭代.
如果你的意图是
to some other scope, iterate over it, do some other stuff, then be able to iterate over it again later on in that same scope.
那么你不应该尝试的只是传递迭代器,而是通过生成器:
var generator = function*() { yield 1; yield 2; yield 3; }; var user = function(generator){ for (let x of generator()) { console.log(x); } for (let x of generator()) { console.log(x); } }
或者只是做一个“循环”迭代器,并在迭代时检查
var generator = function*() { while(true){ yield 1; yield 2; yield 3; } }; for( x in i ){ console.log(x); if(x === 3){ break; } }
代码日志版权声明:
翻译自:http://stackoverflow.com/questions/23848113/is-it-possible-to-reset-an-ecmascript-6-generator-to-its-initial-state
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。