2018-01-26 ES6 阮一峰教程摘记12 Generator函数

Generator函数的语法

1.简介

该函数是ES6的一种异步编程的解决方案, 状态机(封装多个状态)、会返回一个遍历器对象

两个特征:

1. *(一般是紧跟在function后)

2. yield:定义不同的内部状态



yield表达式--暂停标志, 表达式是惰性求值的,只能用在generator函数中

与Iterator接口的关系

由于 Generator 函数就是遍历器生成函数,因此可以把 Generator 赋值给对象的Symbol.iterator属性,从而使得该对象具有 Iterator 接口

2. next()方法的参数

yield表达式本身没有返回值,或者说返回值是undefined

next方法可以带一个参数,该参数就会被当作上一个yield表达式的返回值。(第一次调用next方法时,参数是无效的)



3. for...of循环

可以自动遍历generator函数生成的Iterator对象,无需使用next()方法

return语句不会被遍历到

两种方法,遍历任意对象

4.Generator.prototype.throw()

在函数体外抛出错误,在函数体内捕获错误

5.Generator.prototype.return()

返回传入的参数,并终结遍历


6.next(),throw(),return()的共同点、比较

本质都是:让generator函数恢复执行,并替换yield表达式

7.yield * 表达式

在Generator函数内部调用另一个Generator函数,默认情况下是无效的

使用yield*表达式可以实现,例如:yield*foo();

8.作为对象属性的Generator函数

两种写法:


9.Generator函数的this

默认时,this不像正常那样能使用,new也不能使用

可以使用一个空对象call()来绑定Generator函数的this


10.含义

1)Generator与状态机

2)Generator与协程

3)Generator与上下文

11.应用

Generator函数的特点:暂停函数执行,返回任意表达式的值

1)异步操作的同步化表达--把异步操作放在yield表达式中,无需再使用回调函数

2)控制流管理

3)部署Iterator接口

4)作为数据结构(数组结构)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在此处先列下本篇文章的主要内容 简介 next方法的参数 for...of循环 Generator.prototy...
    醉生夢死阅读 1,481评论 3 8
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍...
    呼呼哥阅读 1,132评论 0 4
  • Generator 函数的语法 简介 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语...
    站在大神的肩膀上看世界阅读 4,282评论 0 6
  • 1.基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细...
    lhdoeo阅读 401评论 0 1
  • 毕伟 2018年4月15日读《活法》 学习要点:劳动具有克制欲望,磨炼心智,塑造人格的功效。 学习感悟:坚持到底...
    毕伟_561e阅读 97评论 0 0

友情链接更多精彩内容