为什么使用ES6生成器
官方解释:
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生成器相关推荐
- es6生成器_ES6生成器
es6生成器 by Sanket Meghani 通过Sanket Meghani ES6生成器 (ES6 Generators) Generators are one of the key feat ...
- ES6生成器函数generator
ES6生成器函数generator generator是ES6新增的一个特殊函数,通过 function* 声明,函数体内通过 yield 来指明函数的暂停点,该函数返回一个迭代器,并且函数执行到 y ...
- ES6 生成器(Generator)
ES6 生成器(Generator) 目录 ES6 生成器(Generator) 什么是生成器? 基本用法 生成器相关操作 斐波那契数列 对象中的Generator 什么是生成器? 生成器就是通过构造 ...
- ES6 rest参数,扩展运算符,Symbol数据类型,迭代器和生成器 【详解加案例 】(二)
文章目录 1.ES6 rest 参数 2. ES6 扩展运算符 2.1 ES6 简介 2.2 应用 3. ES6 Symbol 数据类型 3.1 Symbol两种创建方式 3.2 Symbol注意事项 ...
- ES6 之 for-of 以及 生成器
一.for-of循环 (1)for循环的疑问 起初我们如何遍历数组中的元素呢?20年前JavaScript刚萌生时,你可能这样实现数组遍历: var myArray = ['2','3','aaa'] ...
- es6 generator_让我们探索一下ES6 Generators
es6 generator by Tiago Lopes Ferreira 由Tiago Lopes Ferreira 让我们探索一下ES6 Generators (Let's explore ES6 ...
- 350个特性看透ES6
350个特性看透ES6 介绍 ES6(也称为Harmony,es-nextES2015)是该语言的最新最终定稿规范 该ES6规范是在完成2015年6月,(因此ES2015) 规范的将来版本将遵循该ES ...
- ES6学习——一文搞懂ES6
ES6学习--一文搞懂ES6 es6介绍 ES全称EcmaScript,是脚本语言的规范,而平时经常编写的EcmaScript的一种实现,所以ES新特性其实就是指JavaScript的新特性. 为什么 ...
- 生成器 Generator
ES6生成器(Generator) 目录 ES6生成器(Generator) 什么是生成器(Generator)? 基本操作 斐波那契数列 其他操作 对象中的Generator函数 什么是生成器(Ge ...
最新文章
- 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
- NSCache和NSURLCache网络缓存优化
- MySQL · 捉虫动态 · show binary logs 灵异事件
- 第七篇:使用 CUDA 进行计算优化的两种思路
- linux开机启动rsync,【Linux】rsync同步文件 程序自启动
- java后台面试自我介绍_java腾讯远程面试后台研发岗面试题分享
- 函数式编程基础_在收件箱中免费学习函数式编程的基础
- [线性代数]Note2--矩阵消元
- Menagerie(AtCoder-2234)
- 空调恶搞工具小程序版源码下载
- mosquitto mysql_在laravel中使用Mosquitto-PHP
- Iview的Tabs定时切换
- linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...
- Linux进程的管理与调度(七) -- Linux下2号进程的kthreadd
- 在html中frame标签的作用,HTML框架标签frameset、frame、iframe、noframes
- vs中opencv配置
- Codeforces Round #614 (Div. 2) A题ConneR and the A.R.C. Markland-N
- 七夕情人节表白网页制作【雪花爱心】
- Linux挂载群晖NFS共享文件夹
- 如何快速计算汉字笔画数