Generator函数

简介: generator

1.为什么要用它?

 要用一种工具,它必须有它的价值,首先说一说它的特点。函数的类型目前有四种:普通函数、箭头函数、异步函数、还有Generator函数。Generator的作用是,改善回调地狱,将异步嵌套写成同步写法。

(1)函数定义上的区别:

 Generator函数是一个普通的函数,但是他也有自己的特点:1)在function关键字和函数名之间有一个*(星号)号,这个星号可以跟在function右上角,也可以跟在函数名左上角,都可以;2)内部使用yield关键字,用来chn内部不同的状态产出。

(2)返回值的区别:

   Generator是一个普通函数,调用也是在后面加圆括号,但是与普通函数比,区别在于,普通函数会立即执行并产出一个结果,但是Generator不是,它一定会返回一个对象,一个指针对象,也就是iterator Object.要想指针往下移动,需要调用next()方法,函数中的yield相当于暂停,遇到下一个yield或者return就会暂停,使用next可恢复执行,调用next方法,当流程尚未结束时,会返回一个对象,这个对象的value值,就时yield表达式的值,如果结束了,就会返回undefined

(3)yield表达式

   yiled表达式最后会产生一个对象,对象包含两个属性,value和done,value的值就是yield表达式返回的值,done表示是否执行结束

(4)yield语句会返回一个值,且只有用next方法,指针才会向下移动,相当于惰性求值,yield关键字和return的区别在于:

     1)求值时机:return 会在函数调用后立即执行,而yield会在使用next方法后才执行
     2)返回次数和记忆功能:return 不具备记忆功能,而yield表达式会在使用next后从上次暂停的位置开始向下接着执行,并且可以多次返回状态值

(5) generator函数也可以不用yield表达式,这样函数就变成了一个简单的暂缓执行函数,但是,yield表达式却只能用在generator当中,用在其他地方会报错,另外,yield表达式放在表达式中时,必须放在括号内,否则会报语法错误。
(6) next方法的参数:next方法的参数是上一次yield产生的结果,因此,可以根据next的参数去改变函数的状态,在第一次使用next方法时,传入的参数会被忽略,默认无效,第一次使用next方法实际上是启动遍历器,可以不用带参数。

相关文章
|
负载均衡 Java Nacos
EureKa详解:微服务发现与注册的利器
EureKa详解:微服务发现与注册的利器
|
Java 编译器 C++
Protocol Buffers(proto3) 指南
Protocol Buffers(proto3) 指南
227 0
|
Ubuntu Shell Docker
Docker命令使用
容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器
159 3
|
数据采集 自然语言处理 算法
谈谈大型集团如何构建全域一致性数据模型
数据建模包括概念模型、逻辑模型、物理模型。企业级数据模型设计通常有两种方法:自上而下和自下而上。
谈谈大型集团如何构建全域一致性数据模型
计算机网络基础总结
年年考试年年过,年年过来年年考;又到一年三级网路考试季,讲真这次准备的很仓促;不过的确获得了不一样的收获呢。
|
计算机视觉
阿里提出QuadTree Transformer | 最轻、最强的Vision Transformer Backbone(二)
阿里提出QuadTree Transformer | 最轻、最强的Vision Transformer Backbone(二)
200 0
|
运维 安全 定位技术
洛神故事汇:澳门气象局——跨地域数据传输降本60%的秘诀
澳门特别行政区地球物理暨气象局(简称澳门气象局),成立于1952年。气象局的主要工作为监测、分析、预报天气。由于澳门在地理位置上处于天气频繁变化的区域,会产生大量的气象数据,这些气象数据需要及时的推送给珠海气象局进行分析和计算,并将结果数据从珠海气象局拉回。
752 0
洛神故事汇:澳门气象局——跨地域数据传输降本60%的秘诀
|
运维 Oracle Java
DBA就业|学习笔记
快速学习DBA就业
|
机器学习/深度学习 存储 人工智能
科大讯飞,是如何打造AI平台的?
科大讯飞的成功靠的是AI核心战略:平台+赛道。
1410 0
云栖社区版权提示与说明【2018版】
云栖社区尊重版权,也致力于保护版权,感谢您对我们的关注! 以下内容为云栖社区版权相关事宜的提示,请您仔细阅读。
16503 0