ES6生成器用法实例分析

 更新时间:2017年04月10日 09:39:36   作者:布瑞泽的童话  
这篇文章主要介绍了ES6生成器用法,结合实例形式分析了ECMAScript6中生成器的概念、语法、使用方法与相关注意事项,需要的朋友可以参考下

本文实例讲述了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数组塌陷实例解析

    JavaScript数组塌陷实例解析

    这篇文章主要为大家介绍了JavaScript数组塌陷实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • D3.js实现绘制和弦图的教程详解

    D3.js实现绘制和弦图的教程详解

    弦图,是一种表示实体之间相互关系的图形方法。这篇文章主要为大家详细介绍了如何通过D3.js实现绘制和弦图,文中的示例代码讲解详细,对我们学习D3.js有一定的帮助,需要的可以参考一下
    2022-11-11
  • js实现按钮颜色渐变动画效果

    js实现按钮颜色渐变动画效果

    这篇文章主要介绍了js实现按钮颜色渐变动画效果的方法,涉及javascript鼠标事件及页面表单元素样式的动态操作技巧,需要的朋友可以参考下
    2015-08-08
  • JS判断字符串是否全为空的两种方式

    JS判断字符串是否全为空的两种方式

    当我们需要判断用户输入的是否全是空格,或用户在不输入内容的情况下使用回车发送,此时我们如果需求内容不能为空,常规判断无法识别,空格本身也有length,这个时候就可使用到下列两种方式
    2023-10-10
  • uniapp踩坑实战之文件查找失败:'uview-ui' at main.js解决办法

    uniapp踩坑实战之文件查找失败:'uview-ui' at main.js解决办法

    这篇文章主要给大家介绍了关于uniapp踩坑实战之文件查找失败:'uview-ui' at main.js的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • js实现获取div坐标的方法

    js实现获取div坐标的方法

    这篇文章主要介绍了js实现获取div坐标的方法,通过调用jQuery插件实现获取div元素坐标的功能,非常简单实用,需要的朋友可以参考下
    2015-11-11
  • js实现横向伸展开的二级导航菜单代码

    js实现横向伸展开的二级导航菜单代码

    这篇文章主要介绍了js实现横向伸展开的二级导航菜单代码,涉及javascript鼠标事件及页面元素遍历的相关技巧,需要的朋友可以参考下
    2015-08-08
  • layui问题之自动滚动二级iframe页面到指定位置的方法

    layui问题之自动滚动二级iframe页面到指定位置的方法

    今天小编就为大家分享一篇layui问题之自动滚动二级iframe页面到指定位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • layer实现弹窗提交信息

    layer实现弹窗提交信息

    这篇文章主要为大家详细介绍了layer实现弹窗提交信息的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • video.js 一个页面同时播放多个视频的实例代码

    video.js 一个页面同时播放多个视频的实例代码

    这篇文章主要介绍了video.js 一个页面同时播放多个视频的实例代码 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11

最新评论