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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
日常收集整理的JavaScript常用函数方法
Dec 10 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
Vue.js基础知识小结
Jan 13 Javascript
JS中的多态实例详解
Oct 15 Javascript
微信小程序实现图片滚动效果示例
Dec 05 Javascript
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
vue中监听路由参数的变化及方法
Dec 06 Javascript
基于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临时文件的安全性分析
2014/07/04 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python类属性与实例属性用法分析
2015/05/09 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python实现通讯录功能
2018/02/22 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
python爬取天气数据的实例详解
2020/11/20 Python
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
初中班主任评语大全
2014/04/24 职场文书
辞职信怎么写?
2019/05/21 职场文书