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函数相关推荐

  1. ES6新特性3:函数的扩展

    本文摘自ECMAScript6入门,转载请注明出处. 一.函数参数默认值 1. ES6允许为函数的参数设置默认值,即直接写在参数定义的后面. function log(x, y = 'World') ...

  2. 实战 es6_Node.JS实战65:ES6新特性:箭头函数

    有人说ES6(ES2015)最具魅力的是箭头函数.但真的,我不这么认为:箭头函数这玩意真是又丑又变扭! 不过,箭头函数确实有它的功能优势: 1.简洁: (虽然我也不认为这是真的简洁,还是认为它是很变扭 ...

  3. ES6新特性之箭头函数

    概述:ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义: 箭头函数的注意点 如果形参只有一个,则小括号可以省略 函数体如果只有一条语句, ...

  4. ES6新特性_ES6生成器函数的参数传递---JavaScript_ECMAScript_ES6-ES11新特性工作笔记021

    然后我们再来看es6中生成器函数的参数传递. 首先看一个例子,没有参数的,可以看到右边执行结果. 然后看如果我给这个gen('AAA')调用的时候传一个值 可以看到右边没有反应,我们说生成器函数调用需 ...

  5. ES6新特性_ES6生成器函数实例_第二个实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记023

    然后我们再来看一个案例 这里我们说生成器函数是针对异步编程的解决方案,我们看看他是怎么解决的, 我们知道这个setTimeout是异步执行的,那么 我们这里现在有这样一个需求,我们先拿到某个用户数据, ...

  6. ES6新特性_ES6生成器函数实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记022

    生成器函数是针对异步编程的一个解决方案 我们知道ajax,是异步的,其实 文件操作,网络操作,数据库操作,都是异步的 我们这里做个例子就是1s后输出111,2s后输出222,3s后输出333,可以用上 ...

  7. ES6新特性_ES6生成器函数声明与调用---JavaScript_ECMAScript_ES6-ES11新特性工作笔记020

    然后我们再来看这个 生成器函数的声明调用 生成器函数就是在函数,前面加个*,表示这个是个生成器函数. 然后我们写个iterator=gen(); 调用一下这个函数,看看这个函数中有个next方法 所以 ...

  8. ES6新特性_ES6箭头函数的实践以及应用场景---JavaScript_ECMAScript_ES6-ES11新特性工作笔记010

    然后我们再去看,这个箭头函数的一些应用 右边有块区域我们点击div以后实现2s以后,我们变成粉色 我们去实现 声明一个let ad得到这div对象 然后给这对象添加事件监听,可以看到这里,添加了一个c ...

  9. ES6新特性_ES6箭头函数以及声明特点---JavaScript_ECMAScript_ES6-ES11新特性工作笔记009

    然后我们看这个箭头函数,箭头函数用的很多,很常用. 可以看到以前我们声明函数用上面的方法 现在我们可以把这个function省略,然后加上=> 我们可以调用一下,可以看到没问题 然后我们再看看, ...

最新文章

  1. postgres语法_SQL Create Table解释了MySQL和Postgres的语法示例
  2. 10件5G能实现但4G不能做的事情
  3. Node.js中事件的循环
  4. Swagger使用————接口参数注解的使用缺陷
  5. android应用对于内存的大小是有限制的,Android 的内存限制
  6. android跑马灯源码,Android跑马灯的简单实现方式
  7. 电网调度计算机系统目前有三种,电力系统知识问答(三)
  8. MATLAB神经网络应用之Elman神经网络
  9. 考研复试-计算机网络速记知识点
  10. 项目管理里面的十大知识领域
  11. 五子棋游戏程序禁手设置算法(C语言源码)
  12. 【通信系统信道估计】
  13. matlab 改变图片比例尺,ps修改图片尺寸和比例尺方法图解
  14. 如何成为团队核心?从写出不可维护的代码开始
  15. 硬件工程师成长之路(2)——电路设计
  16. 【微软算法面试高频题】可怜的小猪
  17. 记录一下申请邓白氏编码的完整流程
  18. java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根
  19. web前端项目开发流程
  20. 【读书笔记】《贫穷的本质》- [印度] Abhijit Banerjee / [法] Esther Duflo

热门文章

  1. 「Luogu1552」[APIO2012]派遣
  2. J2EE中一些常用的名词【简】
  3. Ceph分布式存储学习指南1.10 iRODS
  4. sql server 2008 学习笔记
  5. Java集合框架(一)
  6. android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]
  7. php中OpenFlashChart使用之线性图表使用例子
  8. XXX管理平台系统——架构
  9. Windows 2008活动目录的安装和卸载
  10. JRuby:使Java和Ruby成为一家人