示例:

function* helloWorldGenerator() {yield 'hello';yield 'world';return 'ending';
}var hw = helloWorldGenerator();

上面代码定义了一个 Generator 函数helloWorldGenerator,它内部有两个yield表达式(helloworld),即该函数有三个状态:hello,world 和 return 语句(结束执行)。

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

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

yield表达式与return语句既有相似之处,也有区别。相似之处在于,都能返回紧跟在语句后面的那个表达式的值。区别在于每次遇到yield,函数暂停执行,下一次再从该位置继续向后执行,而return语句不具备位置记忆的功能。一个函数里面,只能执行一次(或者说一个)return语句,但是可以执行多次(或者说多个)yield表达式。正常函数只能返回一个值,因为只能执行一次return;Generator 函数可以返回一系列的值,因为可以有任意多个yield。从另一个角度看,也可以说 Generator 生成了一系列的值,这也就是它的名称的来历(英语中,generator 这个词是“生成器”的意思)。

ES6 generator相关推荐

  1. ES6 Generator 初体验

    2019独角兽企业重金招聘Python工程师标准>>> ES6 Generator 初体验 听说 ES6 的 Generator 是一个很神奇的函数,所以去了解了一下. 因为它不同于 ...

  2. es6 Generator函数的应用

    Generator函数的应用 es6 Generator 可以暂停函数执行,返回任意表达式的值.这种特点使得 Generator 有多种应用场景. 异步操作的同步化表达 Generator函数的暂停执 ...

  3. [ES6] Generator 函数

    [ES6] Generator 函数 Generator 函数与普通函数的区别 执行机制 Generator 函数返回的遍历器对象的方法 循环遍历器 Iterator 对象的方法 next 方法 re ...

  4. ES6 Generator实现协同程序

    至此本系列的四篇文章翻译完结,查看完整系列请移步blogs 由于个人能力知识有限,翻译过程中难免有纰漏和错误,望不吝指正issue ES6 Generators: 完整系列 The Basics Of ...

  5. ES6 Generator async

    Generator 函数是 ES6 提供的一种异步编程解决方案 async 函数使得异步操作变得更加方便,是 Generator 函数的语法糖. js单线程的原因是:避免DOM渲染冲突! 更新:201 ...

  6. ES6——generator与yield

    文章目录 一.Generator生成器函数 1. 特点 2. 关联概念 二.yield的加入 1. 引入 2. yield 特点 三.举个例子 一.Generator生成器函数 它是ES6新推出的一种 ...

  7. es6 Generator函数的含义

    Generator函数的含义 Generator 与状态机 Generator 是实现状态机的最佳结构.比如,下面的clock函数就是一个状态机. var ticking = true; var cl ...

  8. es6 Generator函数的this

    Generator函数的this Generator函数总是返回一个遍历器,ES6 规定这个遍历器是Generator函数的实例,也继承了Generator函数的prototype对象上的方法. fu ...

  9. es6 Generator函数概述

    概述 什么是Generator函数 Generator函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同.本章详细介绍 Generator函数的语法和 API,它的异步编程应用请看 ...

  10. ES6——Generator 函数的语法

    Generator 函数是一个状态机,封装了多个内部状态.执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数.返回的遍历器对象 ...

最新文章

  1. 美团是怎么玩儿AI的?今晚8点揭秘美团超大规模知识图谱--美团大脑
  2. Solaris的md5sum和sha1sum命令
  3. Spring Cloud——基于OpenFeign调用PaddleOCR的Restful API服务解决方案
  4. Apache2.4x版本的403问题
  5. STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结
  6. 棋盘覆盖-分治法(代码实现)
  7. input中checked复选框进行单选
  8. AI未成解药 流利说2019年净亏5.75亿 Q4付费用户再降20万
  9. 15行代码抓取兰亭序全文单字高清字帖
  10. 3dmax 文件显示缩略图
  11. 百度离线地图下载和叠加层瓦片切割(工具下载链接已更新)
  12. 树莓派小车简单的迷宫算法-基于Python设计
  13. 23位子网掩码是多少_无敌子网掩码(IP地址)计算方法(完全心算法)
  14. PS快速去除文字水印图片文字水印去除LOGO
  15. 英:英语面试常用口语900句
  16. 关于SAP的用户出口
  17. Java中的RSA加解密工具类:RSAUtils
  18. hexo博客主题kaze 配置详细解析
  19. 一个列子演示java中弱引用的回收时机
  20. 数据可视化——R语言ggplot2包绘制相关矩阵为热图

热门文章

  1. 表盘时针的html代码,html5画布操作的简单学习-简单时钟
  2. c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
  3. mysql文档批处理去重_数据导入经验总结
  4. Linux软件包组的选择
  5. 交通安全与智能控制专业学计算机吗,交通安全与智能控制专业排名好不好_主要课程及就业前景分析...
  6. python自动化测试常用库_Python自动化测试常用库整理
  7. typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
  8. oracle vm virtualbox 无法安装mac,【总结】在VirtualBox上面安装Mac的注意事项
  9. idea改成c盘_解决IDEA占用C盘空间过大的问题
  10. 加减乘除html代码vb,VB做加减乘除的代码是什么啊? 或者是怎么做加减乘除 ?...