遍历 ES6 中的生成器
Iterating through generator in ES6
this code
let func = function *(){
for (let i = 1; i < 5; i++) {
yield i;
}
}
let s = func().next();
console.log(s);
let s2 = func().next();
console.log(s2);
返回
Object {value: 1, done: false}
Object {value: 1, done: false}
所以基本上 func 一直产生第一个值。
但是当我更改为
let f = func();
let s = f.next();
console.log(s);
let s2 = f.next();
console.log(s2);
它按预期工作。为什么将 func 分配给变量会产生如此大的差异?
在第一段代码中,您总是在创建新的生成器实例。我已将这些实例分配给单独的变量,以更清楚地说明这一点:
// first generator instance
let g = func();
// first call to next on the first instance
let s = g.next();
console.log(s);
// second generator instance
let g2 = func();
// first call to next on the second instance
let s2 = g2.next();
console.log(s2);
而在第二个代码段中,您不断迭代相同的生成器(分配给变量 f
):
let f = func();
// first call to next
let s = f.next();
console.log(s);
// second call to next
let s2 = f.next();
console.log(s2);
相关文章:
- 循环遍历以数组为值的Javascript对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 如何遍历包含对象的数组-javascript
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 遍历AngularJs中的对象
- JQuery 遍历当前 SELECT 值
- 循环遍历包含另一个表单的表单
- 使用Yadda和Protractor重用步骤定义,遍历所需文件
- 遍历D3中所有数据点之间的所有值
- 自动遍历所有链接的事件
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- 如何使用 document.querySelectorAll 遍历选定的元素
- 使用Javascript反向遍历XML
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- Netsuite Suitelet:在不达到治理限制的情况下,遍历事务行项目的列表加载和提交记录
- 遍历 ES6 中的生成器
- ES6 的特定方法,用于遍历两个数组并在每个数组中查找匹配项
- ES6对象.forOwn循环遍历对象键的功能