Generator函数是一个状态机,封装了多个内部状态。执行一个Generator,会返回一个迭代器对象,
通过迭代器对象,可以遍历Generator函数内部的每个状态。因此,Generator函数可以看做是一个
迭代器生成器。

1. Generator基本形式

function *foo() {
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
return 6;
}

执行foo得到一个迭代器

var fooIterator = foo();

2.for-of遍历generator

通过for of可以遍历迭代器

for(let item of fooIterator){
console.log(item);
}

3.yield语句

Generator中用yield来执行一条语句,一个yield对应一个状态,yield执行完后面的语句会返回后面表达式的值,并且停留在此状态

4.状态切换

通过next()方法可以切换到下一个状态

console.log(fooIterator.next()) // {value:1,done:false}

并且next方法可以传入参数,作为上一个状态

5.yield* 语句

Generator内部调用另外一个Generator要使用yield*语句,这个内部的Generator会被打碎,内部状态会变成当前Generator的状态。如果使用yield语句执行,内部的Generator将作为一个整体被返回

最新文章

  1. sys模块和os模块,利用sys模块生成进度条
  2. HDU----(3294)Girls' research(manacher)
  3. HDU 1312 Red and Black --- 入门搜索 BFS解法
  4. 关于JS中的constructor与prototype
  5. java 回传参数
  6. HW5.7
  7. [Qt]No relevant classes found.
  8. 给你的Cordova HybridApp加入Splash启动页面
  9. poj 2411 Mondriaan's Dream dp
  10. vue+webpack构建项目
  11. shrio登录验证
  12. Django验证码【附源码】
  13. AntV G6绘制流程图学习例子
  14. log4j - 输出格式控制, PatternLayout参数含义以及详细配置
  15. Statement与PreparedStatement的区别
  16. 关系测试# 或 print(s2-s)Python 集合
  17. SQL2008R2数据库日志太大收缩方法
  18. SQL server安装连接
  19. 什么是ScaleIO中的forwards rebuild和backwards rebuild?
  20. js无缝滚动,不平滑(求高人指点)

热门文章

  1. php成绩排序
  2. 洛谷 T51922 父子
  3. hive 学习系列四(用户自定义函数)
  4. 软件的按契约设计(DbC---Design by Contract)
  5. python3 练习题100例 (二十三)与7相关的数
  6. WordPress4.9 最新版本网站安全漏洞详情与修复
  7. javaweb 项目部署到tomcat
  8. Druid时序数据库常见问题及处理方式
  9. 2、Java并发编程:如何创建线程
  10. SpringBoot学习:使用logback进行日志记录