1、定义和使用

function *gen() {
return 'first generator';
} // 有点类似类的实例化过程
let generatorResult = gen() // 核心方法next
generatorResult.next() // {value: "first generator", done: true} // Generator 如同一个序列:一旦序列中的值被消费,你就不能再次消费它。
generatorResult.next() // undefined

2、next() / value

function *gen() {
yield 'fitst';
yield 'second';
yield 'third';
} let genResult = gen();
genResult.next().value // first
genResult.next().value // second
genResult.next().value // third

3、for ... of  ...

function *gen() {
yield 'fitst';
yield 'second';
yield 'third';
} for (const value of gen()) {
console.log(value);
} // fitst
// second
// third

4、next() 往 generator 中赋值

function *gen() {
var firstname = yield;
var secondname = yield;
console.log(firstname + secondname);
} var genResult = gen()
genResult.next()
genResult.next('Mr. ')
genResult.next('Right') // Mr. Right // 解释一下,由于yield可以理解为暂停器。
// 当第一次调用 next 时,代码将返回并且暂停于此: var firstname = yield;
// 有趣的事情发生在第二次调用 next 时: genResult.next('Mr. ')。
// 此时我们向 next 调用传入了值!Generator将从上一次暂停中恢复,并且 yield将被 "Mr. " 替换。因此firstname的值变成'Mr. '
// 然后继续执行,而又遇到yield处再次暂停: genResult.next('Right')
// 第三次调用 next: genResult.next('Right')
// 同前面一样,传入的 'Right' 将替换 yield,并在赋值完后继续执行。
// 由于没有yield了。所以正常执行了: genResult.next('Right') // Mr. Right

5、使用gen异步操作

let gen;

let getDataOne = () => {
setTimeout(function () {
gen.next('one')
}, 1000);
} let getDataTwo = () => {
setTimeout(function () {
gen.next('two')
}, 1000);
} function *main() {
let dataone = yield getDataOne();
let datatwo = yield getDataTwo();
console.log(dataone, datatwo);
} gen = main();
gen.next(); // {value: undefined, done: false}
// 1秒后输出: one two

es6 generator 基础知识的更多相关文章

  1. ES6 generator 基础

    参考文档 harmony:generators Generator是ES6的新特性,通过yield关键字,可以让函数的执行流挂起,那么便为改变执行流程提供了可能. 创建Generator functi ...

  2. es2015(es6)基础知识整理(更新中...)

    1.let let可以声明块级作用域变量 'use strict'; if (true) { let app = 'apple'; } console.log(app); //外面是访问不到app的 ...

  3. ES6的基础知识总结

    一. ES6 ES6中定义变量使用 let/const let 使用let定义的变量不能进行"变量提升" 同一个作用域中,let不能重复定义相同的变量名 使用var在全局作用域中定 ...

  4. ES6的基础知识(一)

    1.ECMAScript 6.0(以下简称ES6). 2.ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的其中一种实现. 3.对ES6支持的浏览器:超过 90% ...

  5. ES6 Generator的应用场景

    一.基础知识 API文档 ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个 ...

  6. Spring基础知识

    Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...

  7. 性能测试学习 第九课--LR12中controller基础知识

    1.设计手工场景,理解集合点的策略 2.添加load generator 一.controller基础知识 1.controller的原理 通过场景设计来模拟用户的真实操作并调用vugen中的脚本,然 ...

  8. javascript基础知识笔记-自用

    笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...

  9. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

随机推荐

  1. Diablo 3 Web API

    这是暴雪提供的WebAPI,能够通过网页的方式訪问玩家的用户信息.结构相当清晰,非常有借鉴价值. 应用JSON(JavaScript Object Notation)做数据交换,很好理解. 以我的暗黑 ...

  2. [Algorithm] Radix Sort Algorithm

    For example we have the array like this: [, , , , , ] First step is using Counting sort for last dig ...

  3. spark shuffle过程分析

    spark shuffle流程分析 回到ShuffleMapTask.runTask函数 如今回到ShuffleMapTask.runTask函数中: overridedef runTask(cont ...

  4. 【Javascript Demo】无刷新预览所选择的图片

    1.效果如下,可测试 2.代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  5. WIN7使用技巧 让电脑变身WiFi热点,让手机、笔记本共享上网,如何开启无线网络,共享无线网络

    将win7电脑变身WIFI热点,让手机.笔记本共享上网 用win7建立无线局域网,可以共享上网可以局域网游戏. 开启windows 7的隐藏功能:虚拟WIFI和SoftAP(即虚拟无线AP),就可以让 ...

  6. java编程思想 第四版 第六章 个人练习

    欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...

  7. curl库的使用,32-64

    http 使用curl发起https请求 http://www.cnblogs.com/ainiaa/archive/2011/11/08/2241385.html Curl配置及编译: CFLAGS ...

  8. ora01219数据库未打开

    今天连接数据后,一看提示ora01219数据库未打开,关了服务重开仍然是这样,在度娘找了下才发现问题 应该是我删除了一个数据文件,看下解决办法 错误原因: 直接关闭数据库,然后删除DBF文件.即表空间 ...

  9. iphone openssh

    安装openssh 用户名:默认是 root 密码:默认是 alpine 修改登陆密码:passwd

  10. cpuinfo详解

    cat /proc/cpuinfo processor: 23:超线程技术的虚拟逻辑核第24个   ###一般看最后一个0...23 表示24线程 vendor_id: GenuineIntel:CP ...