时间:2021-05-28
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP5.5迭代生成器用法。分享给大家供大家参考,具体如下:PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP
ES6新的数组方法、集合、for-of循环、展开运算符(...)甚至异步编程都依赖于迭代器(Iterator)实现。本文会详解ES6的迭代器与生成器,并进一步挖
本文实例讲述了python生成器用法。分享给大家供大家参考,具体如下:1.生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进
本文实例讲述了Yii不依赖Model的表单生成器用法。分享给大家供大家参考。具体实现方法如下:默认的Yii的表单生成器只需要这样就可以了:复制代码代码如下:$f
本文实例讲述了ES6新特性三:Generator(生成器)函数。分享给大家供大家参考,具体如下:1.简介①理解:可以把它理解成一个函数的内部状态的遍历器,每调用