Generator 就是一种状态机,封装多个内部状态。

执行 Generator 函数会返回一个遍历器对象(),也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。

形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。

然后,Generator 函数的调用方法与普通函数一样,也是在函数名后面加上一对圆括号。不同的是,调用 Generator 函数后,该函数并不执行,返回的也不是函数运行结果,而是一个指向内部状态的指针对象,也就是上一章介绍的遍历器对象(Iterator Object)。

下一步,必须调用遍历器对象的next方法,使得指针移向下一个状态。也就是说,每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。换言之,Generator 函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行

详情:http://es6.ruanyifeng.com/#docs/generator

转载于:https://www.cnblogs.com/cnlg123/p/8467069.html

Generator 简介相关推荐

  1. Generator——简介

    概念 Generator是ES6提供的一种异步编程解决方案,它的执行方式与其他函数完全不一样. 1.我们可以理解为它是一个状态机,里面封装了多个内部状态. 2.执行Generator函数会返回一个遍历 ...

  2. System Generator简介

    前言 System generator 安装之后会在Simulin模块库中添加一些Xilinx FPGA专用的模块库,包括Basic Element,Communication,Control Log ...

  3. 基于FPGA的图像处理(一)--System Generator介绍

    计算机视觉系统通常需要进行大量的信息处理才能够得到所需要的信息.目前主要有CPU.GPU.ASIC.DSP.FPGA等计算平台. 常用的计算机视觉系统通过通用计算机进行视觉信息处理,但是,由于CPU的 ...

  4. MyBatis Generator 代码自动生成器,从此解放你的双手

    前言 在日常开发工作中,我们往往需要自己去构建各种数据表所对应的持久化对象(PO).用于操作数据库的接口(DAO)以及跟 DAO 所绑定的对应 XML.这都是一些重复性的操作,不需要多大技术含量,这时 ...

  5. Mybatis Generator逆向工程的使用

    MyBatis Generator简介 MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为所有版本的MyBatis以及版本2.2.0之后的 ...

  6. 5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解

    文章目录 前言 一.Mybatis Generator简介 二.Maven插件运行方式 三.生成配置 generatorConfig.xml MyBatis3Simple风格 MyBatis3风格 M ...

  7. MyBatis Generator 代码生成器

    MyBatis Generator 代码生成器 MyBatis Generator简介 MyBatis Generator(MBG)是MyBatis 的代码生成器.它将为MyBatis的所有版本生成代 ...

  8. SpringBoot第八篇:整合MyBatis-Generator

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10894278.html 版权声明:本文为博主原创文章,转载请附上博文链接! 注意:本章有大量代码 ...

  9. 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支

    使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...

最新文章

  1. Spring Cloud Alibaba 综合应用:Seata 分布式事务实战教程
  2. Cissp-【第4章 通信与网络安全】-2021-3-12(377页-392页)
  3. java Datasource,数据库连接池
  4. RedisTemplate方法的一些简单运用
  5. The disk contains an unclean file system\
  6. 华为P50为屠榜而来:搭载超高像素1/1.18英寸大底主摄
  7. 定速巡航和自适应定速巡航有什么区别,开关分别是什么样的?
  8. Xshell 常见问题及相关配置
  9. gerrit docker运行失败 chown: /var/gerrit/review_site: Permission denied 【已解决】
  10. 179 Largest Number
  11. 选择适合你的虚拟现实体验
  12. Cannot commit, transaction is already closed
  13. vue 点击谁 谁变色
  14. python从键盘上输入一个字符、当输入的是英文字母时_以下程序的功能:从键盘上输入一个字符,当输入的是英文字母时,输出\'输入的是英文字母\'; 当输入的...
  15. 谷歌基情录:TensorFlow、Hadoop、MapReduce 都靠他们诞生!
  16. 【微信早安定时推送消息】微信公众号定时推送早安消息 带天气、纪念日、生日、定时推送等(完整代码)
  17. 大学计算机学不懂还挂科想转专业,2018大一新生转专业难不难?那些转了专业的学生居然还会后悔!...
  18. 安势信息入选 SegmentFault思否「2022 中国新锐技术先锋企业」
  19. Myth源码解析系列之九-总结
  20. BIEE Hello World式的例子

热门文章

  1. 软件测试要经过哪几个阶段?
  2. Linux下如何编译并运行C程序
  3. 利用PowerShell Empire实现Word文档DDE攻击控制(简单没啥用)
  4. twisted系列教程十四— pre-fireed deferred
  5. 数据结构与算法——二叉排序树详解以及代码实现
  6. 基于vue框架项目开发过程中遇到的问题总结(三)
  7. BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
  8. HDFS分布式文件系统设计思想
  9. 写给中学生的算法入门:学代码之前看这篇就够了
  10. makefile之伪目标(6)