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重写Cognos右键菜单的实现代码
Apr 11 Javascript
js实现拖拽 闭包函数详细介绍
Nov 25 Javascript
JS打开图片另存为对话框实现代码
Dec 26 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
探寻Javascript执行效率问题
Nov 12 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
laravel5.6实现数值转换
2019/10/23 PHP
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
Python3实现Web网页图片下载
2016/01/28 Python
独特的python循环语句
2016/11/20 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
政府个人对照检查材料
2014/08/28 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
初中语文教学随笔
2015/08/15 职场文书