生成器 - Generators

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

手工去创建迭代器有点麻烦,我们可以使用 Generators 去生成迭代器 .. Generators 可以翻译成生成器 .. 先看一下简单的生成器 .. 定义一个生成品用的是 function* 这个关键词 .. 然后是生成器的名字 .. chef ..

在这个生成器里面,每次调用 next 方法要返回的那个东西,可以用一个 yield .. 比如 yield '西红柿' .. 这次第一次调用 next 方法的时候,返回的值就是 西红柿 ..

再用一个 yield .. 返回的是 鸡蛋 ... 这就是一个简单的生成器 .. 下面我们可以基于这个生成器去创建一个迭代器 .. 定义一个变量 .. 名字是 wanghao .. 让它等于 chef() .. 现在 wanghao 就是一个迭代器 .. 所以可以使用 next() 方法 .. 把返回的东西输出到控制台上 ..

结果你会看到,就是返回了一个对象 .. value 属性的值是 西红柿 .. done 的值是 false .. 等待下一次执行 next .. 再执行一次 .. 这样就会使用第二个 yield .. 也就是 value 属性的值会变成 鸡蛋 ..

再执行一次 .. 没有要 yield 的东西了 .. 所以 value 的值会变成 undefined .. done 的值会变成 true .. 意思是,没有要迭代的东西了 ..

下面再改造一个 chef 这个生成器 .. 让它可以接收一个参数 .. 名字是 foods .. 然后在它里面,用一个 for 循环 .. 每次循环都去 yield 当前循环的项目 ..

在这个 chef 里面,设置一下 chef 的 foods 参数的值 .. 同样第一次 value 是 西红柿,第二次是 鸡蛋 .. 没东西了以后,value 就会是 undefined .. done 变成了 true ..

这个生成器也可以使用函数表达式去创建 .. let chef 等于 .. function* ..

生成器 - Generators《 JavaScript:ES6 新功能 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点