官方解释:

1、异步编程,文件操作,网络操作(ajax, request) 数据库操作使用生成器操作更加方便;

2、有效的解决回调地狱的问题;

举例:

请在控制台 1s 后控制台输出 111 ,2s后输出 222 ,3s后输出 333。

(1)使用传统的的回调写法

        setTimeout(() => {console.log(111);setTimeout(() => {console.log(222);setTimeout(() => {console.log(333);}, 3000);}, 2000);}, 1000);

(2)使用生成器减少层级结构

       function one(){setTimeout(()=>{console.log(111);iterator.next();},1000)}function two(){setTimeout(()=>{console.log(222);iterator.next();},2000)}function three(){setTimeout(()=>{console.log(333);iterator.next();},3000)}function * gen(){yield one();yield two();yield three();}//调用生成器函数let iterator = gen();iterator.next();

第一次使用iterator.next()使程序走进one函数中,后续使用iterator.next()让程序继续让下走;

对比发现,使用生成器的模式,再次添加逻辑功能,函数代码不会再缩进了。也不用去关心原来的嵌套逻辑,代码更加直观易懂,方便操作;

(3)生成器函数参数

        function * gen(arg){console.log(arg);let one = yield 111;console.log(one);let two = yield 222;console.log(two);let three = yield 333;console.log(three);}//执行获取迭代器对象let iterator = gen('AAA');console.log(iterator.next());//next方法可以传入实参console.log(iterator.next('BBB'));console.log(iterator.next('CCC'));console.log(iterator.next('DDD'));

生成器函数,不但可以控制流程顺序,其实也是可以带入参数的;其参数是上一个迭代函数执行成功以后的返回值,如上图所示;

为什么使用ES6生成器相关推荐

  1. es6生成器_ES6生成器

    es6生成器 by Sanket Meghani 通过Sanket Meghani ES6生成器 (ES6 Generators) Generators are one of the key feat ...

  2. ES6生成器函数generator

    ES6生成器函数generator generator是ES6新增的一个特殊函数,通过 function* 声明,函数体内通过 yield 来指明函数的暂停点,该函数返回一个迭代器,并且函数执行到 y ...

  3. ES6 生成器(Generator)

    ES6 生成器(Generator) 目录 ES6 生成器(Generator) 什么是生成器? 基本用法 生成器相关操作 斐波那契数列 对象中的Generator 什么是生成器? 生成器就是通过构造 ...

  4. ES6 rest参数,扩展运算符,Symbol数据类型,迭代器和生成器 【详解加案例 】(二)

    文章目录 1.ES6 rest 参数 2. ES6 扩展运算符 2.1 ES6 简介 2.2 应用 3. ES6 Symbol 数据类型 3.1 Symbol两种创建方式 3.2 Symbol注意事项 ...

  5. ES6 之 for-of 以及 生成器

    一.for-of循环 (1)for循环的疑问 起初我们如何遍历数组中的元素呢?20年前JavaScript刚萌生时,你可能这样实现数组遍历: var myArray = ['2','3','aaa'] ...

  6. es6 generator_让我们探索一下ES6 Generators

    es6 generator by Tiago Lopes Ferreira 由Tiago Lopes Ferreira 让我们探索一下ES6 Generators (Let's explore ES6 ...

  7. 350个特性看透ES6

    350个特性看透ES6 介绍 ES6(也称为Harmony,es-nextES2015)是该语言的最新最终定稿规范 该ES6规范是在完成2015年6月,(因此ES2015) 规范的将来版本将遵循该ES ...

  8. ES6学习——一文搞懂ES6

    ES6学习--一文搞懂ES6 es6介绍 ES全称EcmaScript,是脚本语言的规范,而平时经常编写的EcmaScript的一种实现,所以ES新特性其实就是指JavaScript的新特性. 为什么 ...

  9. 生成器 Generator

    ES6生成器(Generator) 目录 ES6生成器(Generator) 什么是生成器(Generator)? 基本操作 斐波那契数列 其他操作 对象中的Generator函数 什么是生成器(Ge ...

最新文章

  1. 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
  2. NSCache和NSURLCache网络缓存优化
  3. MySQL · 捉虫动态 · show binary logs 灵异事件
  4. 第七篇:使用 CUDA 进行计算优化的两种思路
  5. linux开机启动rsync,【Linux】rsync同步文件 程序自启动
  6. java后台面试自我介绍_java腾讯远程面试后台研发岗面试题分享
  7. 函数式编程基础_在收件箱中免费学习函数式编程的基础
  8. [线性代数]Note2--矩阵消元
  9. Menagerie(AtCoder-2234)
  10. 空调恶搞工具小程序版源码下载
  11. mosquitto mysql_在laravel中使用Mosquitto-PHP
  12. Iview的Tabs定时切换
  13. linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...
  14. Linux进程的管理与调度(七) -- Linux下2号进程的kthreadd
  15. 在html中frame标签的作用,HTML框架标签frameset、frame、iframe、noframes
  16. vs中opencv配置
  17. Codeforces Round #614 (Div. 2) A题ConneR and the A.R.C. Markland-N
  18. 七夕情人节表白网页制作【雪花爱心】
  19. Linux挂载群晖NFS共享文件夹
  20. 如何快速计算汉字笔画数

热门文章

  1. JsonPath的使用
  2. 高性能队列——Disruptor
  3. python字符串讲解
  4. 《树莓派Python编程入门与实战》——1.7 排除树莓派的故障
  5. 又拍云张聪谈安全、HTTPS、自定义、CDN的未来趋势
  6. JsonUtils.java
  7. Google 历年笔试面试30题
  8. 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
  9. sprint冲刺计划第三天团队任务
  10. SpringCloud学习2-Springboot监控模块(actuator)