ES6新特性之Generator函数
Generator函数
Generator 函数是 ES6 提供的 一种异步编程解决方案,语法行为与传统函数完全不同 。
Generator函数有两个特征: 一是 function命令与函数名 之间有一个星号: 二是 函数体内部使用 yield吾句定义不同的内部状态。
<script>function* hello(){yield "hello";yield "world";yield "abc";return "qq";}let h = hello();// console.log(h.next());// console.log(h.next());// console.log(h.next());// console.log(h.next());for(let v of h){console.log(v);}</script>
用法:
<script>
function* hello () {
yield "hello";
yield "world";
return "done";
}
let h = hello();
console.log(h.next()); //{value: "hello", done: false}
console.log(h.next()); //{value: "world", done: false}
console.log(h.next()); //{value: "done", done: true}
console.log(h.next()); //{value: undefined, done: true}
</script>
可以看到,通过hello()返回的h对象,每调用一次next()方法返回一个对象,该对象包含了value值和done状态。直到遇到return关键字或者函数执行完毕,这个时候返回的状态为ture,表示已经执行结束了。
for...of循环
通过for...of可以循环遍历Generator函数返回的迭代器。
用法:
<script>
function* hello () {
yield "hello";
yield "world";
return "done";
}
let h = hello();
console.log(h.next()); //{value: "hello", done: false}
console.log(h.next()); //{value: "world", done: false}
console.log(h.next()); //{value: "done", done: true}
console.log(h.next()); //{value: undefined, done: true}
</script>
ES6新特性之Generator函数相关推荐
- ES6新特性3:函数的扩展
本文摘自ECMAScript6入门,转载请注明出处. 一.函数参数默认值 1. ES6允许为函数的参数设置默认值,即直接写在参数定义的后面. function log(x, y = 'World') ...
- 实战 es6_Node.JS实战65:ES6新特性:箭头函数
有人说ES6(ES2015)最具魅力的是箭头函数.但真的,我不这么认为:箭头函数这玩意真是又丑又变扭! 不过,箭头函数确实有它的功能优势: 1.简洁: (虽然我也不认为这是真的简洁,还是认为它是很变扭 ...
- ES6新特性之箭头函数
概述:ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义: 箭头函数的注意点 如果形参只有一个,则小括号可以省略 函数体如果只有一条语句, ...
- ES6新特性_ES6生成器函数的参数传递---JavaScript_ECMAScript_ES6-ES11新特性工作笔记021
然后我们再来看es6中生成器函数的参数传递. 首先看一个例子,没有参数的,可以看到右边执行结果. 然后看如果我给这个gen('AAA')调用的时候传一个值 可以看到右边没有反应,我们说生成器函数调用需 ...
- ES6新特性_ES6生成器函数实例_第二个实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记023
然后我们再来看一个案例 这里我们说生成器函数是针对异步编程的解决方案,我们看看他是怎么解决的, 我们知道这个setTimeout是异步执行的,那么 我们这里现在有这样一个需求,我们先拿到某个用户数据, ...
- ES6新特性_ES6生成器函数实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记022
生成器函数是针对异步编程的一个解决方案 我们知道ajax,是异步的,其实 文件操作,网络操作,数据库操作,都是异步的 我们这里做个例子就是1s后输出111,2s后输出222,3s后输出333,可以用上 ...
- ES6新特性_ES6生成器函数声明与调用---JavaScript_ECMAScript_ES6-ES11新特性工作笔记020
然后我们再来看这个 生成器函数的声明调用 生成器函数就是在函数,前面加个*,表示这个是个生成器函数. 然后我们写个iterator=gen(); 调用一下这个函数,看看这个函数中有个next方法 所以 ...
- ES6新特性_ES6箭头函数的实践以及应用场景---JavaScript_ECMAScript_ES6-ES11新特性工作笔记010
然后我们再去看,这个箭头函数的一些应用 右边有块区域我们点击div以后实现2s以后,我们变成粉色 我们去实现 声明一个let ad得到这div对象 然后给这对象添加事件监听,可以看到这里,添加了一个c ...
- ES6新特性_ES6箭头函数以及声明特点---JavaScript_ECMAScript_ES6-ES11新特性工作笔记009
然后我们看这个箭头函数,箭头函数用的很多,很常用. 可以看到以前我们声明函数用上面的方法 现在我们可以把这个function省略,然后加上=> 我们可以调用一下,可以看到没问题 然后我们再看看, ...
最新文章
- postgres语法_SQL Create Table解释了MySQL和Postgres的语法示例
- 10件5G能实现但4G不能做的事情
- Node.js中事件的循环
- Swagger使用————接口参数注解的使用缺陷
- android应用对于内存的大小是有限制的,Android 的内存限制
- android跑马灯源码,Android跑马灯的简单实现方式
- 电网调度计算机系统目前有三种,电力系统知识问答(三)
- MATLAB神经网络应用之Elman神经网络
- 考研复试-计算机网络速记知识点
- 项目管理里面的十大知识领域
- 五子棋游戏程序禁手设置算法(C语言源码)
- 【通信系统信道估计】
- matlab 改变图片比例尺,ps修改图片尺寸和比例尺方法图解
- 如何成为团队核心?从写出不可维护的代码开始
- 硬件工程师成长之路(2)——电路设计
- 【微软算法面试高频题】可怜的小猪
- 记录一下申请邓白氏编码的完整流程
- java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根
- web前端项目开发流程
- 【读书笔记】《贫穷的本质》- [印度] Abhijit Banerjee / [法] Esther Duflo