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 相关文章推荐
JS格式化数字保留两位小数点示例代码
Oct 15 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
Dec 08 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
javascript表单正则应用
Feb 04 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 Javascript
vue写h5页面的方法总结
Feb 12 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
Mar 19 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 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
javascript编程起步(第七课)
2007/01/10 Javascript
use jscript Create a SQL Server database
2007/06/16 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
经贸日语专业个人求职信范文
2013/12/28 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
简易离婚协议书范本
2014/10/24 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
赤壁观后感(2)
2015/06/15 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
详解Python flask的前后端交互
2022/03/31 Python