最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6生成器用法實(shí)例分析

 更新時(shí)間:2017年04月10日 09:39:36   作者:布瑞澤的童話  
這篇文章主要介紹了ES6生成器用法,結(jié)合實(shí)例形式分析了ECMAScript6中生成器的概念、語(yǔ)法、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了ES6生成器用法。分享給大家供大家參考,具體如下:

語(yǔ)法

何為生成器?讓我們先看看以下代碼:

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!";
}

你沒(méi)有看錯(cuò),這就是JavaScript代碼。是不是和你曾經(jīng)認(rèn)識(shí)的javascript不太一樣。這個(gè)函數(shù)就叫做生成器函數(shù)。生成器函數(shù)看起來(lái)和普通的函數(shù)是不是有點(diǎn)相像呢?

它們的區(qū)別如下:

一般的函數(shù)以function開(kāi)頭,而生成器函數(shù)以function* 開(kāi)頭。

生成器函數(shù)中有一個(gè)特殊關(guān)鍵字就是yield,作用就是暫停函數(shù)。配合next方法來(lái)調(diào)用可以達(dá)到一步一步的執(zhí)行函數(shù)的目的

我們看看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方法后,生成器函數(shù)就執(zhí)行到下一個(gè)yield位置處。

基本的生成器語(yǔ)法就講完了。

應(yīng)用

生成器可以用來(lái)異步編程,我在之前的文章中有過(guò)介紹,可以參考前面一篇《基于javascript的異步編程實(shí)例詳解

但是需要注意的是,生成器并不是用來(lái)寫異步的,這僅僅是一種hack手段而已。

希望本文所述對(duì)大家ECMAScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

丰镇市| 武隆县| 务川| 红河县| 许昌市| 高陵县| 大港区| 喀喇| 漾濞| 通州区| 开鲁县| 长葛市| 根河市| 阳泉市| 葵青区| 陆川县| 呼伦贝尔市| 威宁| 珠海市| 治多县| 普兰店市| 宁夏| 铁岭县| 潮安县| 石狮市| 永靖县| 遵化市| 安顺市| 鄂托克前旗| 广安市| 四子王旗| 喀喇| 穆棱市| 远安县| 广饶县| 西乡县| 武冈市| 房产| 平定县| 万载县| 贡觉县|