ES6 generator
示例:
function* helloWorldGenerator() {yield 'hello';yield 'world';return 'ending'; }var hw = helloWorldGenerator();
上面代码定义了一个 Generator 函数helloWorldGenerator
,它内部有两个yield
表达式(hello
和world
),即该函数有三个状态: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相关推荐
- ES6 Generator 初体验
2019独角兽企业重金招聘Python工程师标准>>> ES6 Generator 初体验 听说 ES6 的 Generator 是一个很神奇的函数,所以去了解了一下. 因为它不同于 ...
- es6 Generator函数的应用
Generator函数的应用 es6 Generator 可以暂停函数执行,返回任意表达式的值.这种特点使得 Generator 有多种应用场景. 异步操作的同步化表达 Generator函数的暂停执 ...
- [ES6] Generator 函数
[ES6] Generator 函数 Generator 函数与普通函数的区别 执行机制 Generator 函数返回的遍历器对象的方法 循环遍历器 Iterator 对象的方法 next 方法 re ...
- ES6 Generator实现协同程序
至此本系列的四篇文章翻译完结,查看完整系列请移步blogs 由于个人能力知识有限,翻译过程中难免有纰漏和错误,望不吝指正issue ES6 Generators: 完整系列 The Basics Of ...
- ES6 Generator async
Generator 函数是 ES6 提供的一种异步编程解决方案 async 函数使得异步操作变得更加方便,是 Generator 函数的语法糖. js单线程的原因是:避免DOM渲染冲突! 更新:201 ...
- ES6——generator与yield
文章目录 一.Generator生成器函数 1. 特点 2. 关联概念 二.yield的加入 1. 引入 2. yield 特点 三.举个例子 一.Generator生成器函数 它是ES6新推出的一种 ...
- es6 Generator函数的含义
Generator函数的含义 Generator 与状态机 Generator 是实现状态机的最佳结构.比如,下面的clock函数就是一个状态机. var ticking = true; var cl ...
- es6 Generator函数的this
Generator函数的this Generator函数总是返回一个遍历器,ES6 规定这个遍历器是Generator函数的实例,也继承了Generator函数的prototype对象上的方法. fu ...
- es6 Generator函数概述
概述 什么是Generator函数 Generator函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同.本章详细介绍 Generator函数的语法和 API,它的异步编程应用请看 ...
- ES6——Generator 函数的语法
Generator 函数是一个状态机,封装了多个内部状态.执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数.返回的遍历器对象 ...
最新文章
- 美团是怎么玩儿AI的?今晚8点揭秘美团超大规模知识图谱--美团大脑
- Solaris的md5sum和sha1sum命令
- Spring Cloud——基于OpenFeign调用PaddleOCR的Restful API服务解决方案
- Apache2.4x版本的403问题
- STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结
- 棋盘覆盖-分治法(代码实现)
- input中checked复选框进行单选
- AI未成解药 流利说2019年净亏5.75亿 Q4付费用户再降20万
- 15行代码抓取兰亭序全文单字高清字帖
- 3dmax 文件显示缩略图
- 百度离线地图下载和叠加层瓦片切割(工具下载链接已更新)
- 树莓派小车简单的迷宫算法-基于Python设计
- 23位子网掩码是多少_无敌子网掩码(IP地址)计算方法(完全心算法)
- PS快速去除文字水印图片文字水印去除LOGO
- 英:英语面试常用口语900句
- 关于SAP的用户出口
- Java中的RSA加解密工具类:RSAUtils
- hexo博客主题kaze 配置详细解析
- 一个列子演示java中弱引用的回收时机
- 数据可视化——R语言ggplot2包绘制相关矩阵为热图
热门文章
- 表盘时针的html代码,html5画布操作的简单学习-简单时钟
- c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
- mysql文档批处理去重_数据导入经验总结
- Linux软件包组的选择
- 交通安全与智能控制专业学计算机吗,交通安全与智能控制专业排名好不好_主要课程及就业前景分析...
- python自动化测试常用库_Python自动化测试常用库整理
- typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
- oracle vm virtualbox 无法安装mac,【总结】在VirtualBox上面安装Mac的注意事项
- idea改成c盘_解决IDEA占用C盘空间过大的问题
- 加减乘除html代码vb,VB做加减乘除的代码是什么啊? 或者是怎么做加减乘除 ?...