ES6生成器用法实例分析
本文实例讲述了ES6生成器用法。分享给大家供大家参考,具体如下:
语法
何为生成器?让我们先看看以下代码:
function*quips(name){
yield"hello"+name+"!";
yield"ihopeyouareenjoyingtheblogposts";
if(name.startsWith("X")){
yield"it'scoolhowyournamestartswithX,"+name;
}
yield"seeyoulater!";
}
你没有看错,这就是JavaScript代码。是不是和你曾经认识的javascript不太一样。这个函数就叫做生成器函数。生成器函数看起来和普通的函数是不是有点相像呢?
它们的区别如下:
一般的函数以function开头,而生成器函数以function*开头。
生成器函数中有一个特殊关键字就是yield,作用就是暂停函数。配合next方法来调用可以达到一步一步的执行函数的目的。
我们看看next方法的使用:
>variter=quips("lf");
[objectGenerator]
>iter.next()
{value:"hellolf!",done:false}
>iter.next()
{value:"ihopeyouareenjoyingtheblogposts",done:false}
>iter.next()
{value:"seeyoulater!",done:false}
>iter.next()
{value:undefined,done:true}
可以看到,每一次next方法后,生成器函数就执行到下一个yield位置处。
基本的生成器语法就讲完了。
应用
生成器可以用来异步编程,我在之前的文章中有过介绍,可以参考前面一篇《基于javascript的异步编程实例详解》
但是需要注意的是,生成器并不是用来写异步的,这仅仅是一种hack手段而已。
希望本文所述对大家ECMAScript程序设计有所帮助。