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网页实时倒计时精确到秒级
Feb 10 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
浅谈JavaScript的计时器对象
Dec 26 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
Vue源码探究之虚拟节点的实现
Apr 17 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 Javascript
关于Javascript闭包与应用的详解
Apr 22 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文件上传实例详解!!!
2007/01/02 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
jquery对table做排序操作的实例演示
2017/08/10 jQuery
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Django工程的分层结构详解
2019/07/18 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
机械专业应届生求职信
2013/12/12 职场文书
名人演讲稿范文
2013/12/28 职场文书
素质教育标语
2014/06/27 职场文书
公安学专业求职信
2014/07/27 职场文书
班组拓展活动方案
2014/08/14 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
高中化学教学反思
2016/02/22 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript