ES6生成器用法实例分析


Posted in Javascript onApril 10, 2017

本文实例讲述了ES6生成器用法。分享给大家供大家参考,具体如下:

语法

何为生成器?让我们先看看以下代码:

function* quips(name) {
 yield "hello " + name + "!";
 yield "i hope you are enjoying the blog posts";
 if (name.startsWith("X")) {
  yield "it's cool how your name starts with X, " + name;
 }
 yield "see you later!";
}

你没有看错,这就是JavaScript代码。是不是和你曾经认识的javascript不太一样。这个函数就叫做生成器函数。生成器函数看起来和普通的函数是不是有点相像呢?

它们的区别如下:

一般的函数以function开头,而生成器函数以function* 开头

生成器函数中有一个特殊关键字就是yield,作用就是暂停函数。配合next方法来调用可以达到一步一步的执行函数的目的

我们看看next方法的使用:

> var iter = quips("lf");
 [object Generator]
> iter.next()
 { value: "hello lf!", done: false }
> iter.next()
 { value: "i hope you are enjoying the blog posts", done: false }
> iter.next()
 { value: "see you later!", done: false }
> iter.next()
 { value: undefined, done: true }

可以看到,每一次next方法后,生成器函数就执行到下一个yield位置处。

基本的生成器语法就讲完了。

应用

生成器可以用来异步编程,我在之前的文章中有过介绍,可以参考前面一篇《基于javascript的异步编程实例详解》

但是需要注意的是,生成器并不是用来写异步的,这仅仅是一种hack手段而已。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
JSON无限折叠菜单编写实例
Dec 16 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
vue.js的提示组件
Mar 02 Javascript
vue+webpack实现异步加载三种用法示例详解
Apr 24 Javascript
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
ES6基础之默认参数值
Feb 21 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
基于javascript的异步编程实例详解
Apr 10 #Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 #Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 #Javascript
js实现适配不同的屏幕大小
Apr 10 #Javascript
JS闭包可被利用的常见场景小结
Apr 09 #Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 #jQuery
作为老司机使用 React 总结的 11 个经验教训
Apr 08 #Javascript
You might like
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python删除字符串中指定字符的方法
2018/08/13 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
外企办公室竞聘演讲稿
2013/12/29 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
明确岗位职责
2015/02/14 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
教师求职自荐信
2015/03/26 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP