ES6基础之——生成器Generators

手共创建迭代器有点麻烦,我们可以使用Generators去生成迭代器,Generators可以翻译成生成器
先看一下一个简单的生成器,定义一个生成器用的是
functions* chef(){
  yield 'tomato';
  yield 'eggs';
}
let zhangsan=chef();

  

现在zhangsan就是一个迭代器,可以使用next()方法把他返回的东西输出在控制台,结果如下:
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}

 

下面再改造一下chef生成器:将它接受一个参数,名字为foods,在函数里面使用for循环,每次循环都yield当前循环项
functions* chef(foods){
for(var i=0;i<foods.lingth;i++){
  yield foods[i]
}
}
let zhangsan=chef(['tomato','eggs']);
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}

 

这个生成器也可以使用函数表达的方式创建
let chef =functions* (foods){
  for(var i=0;i<foods.lingth;i++){
    yield foods[i]
  }
}
let zhangsan=chef(['tomato','eggs']);
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}

 

 

posted @ 2019-07-01 08:49  qnlz  阅读(339)  评论(0编辑  收藏  举报