国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

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

2024-05-06 15:18:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎ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)寫(xiě)異步的,這僅僅是一種hack手段而已。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 柞水县| 太白县| 英超| 改则县| 峨山| 宁化县| 林甸县| 黄冈市| 开平市| 额敏县| 治多县| 平江县| 光泽县| 甘洛县| 长葛市| 白山市| 广饶县| 淳化县| 晋城| 平果县| 承德县| 青川县| 南皮县| 杭锦旗| 汝城县| 永宁县| 离岛区| 嘉善县| 西乌珠穆沁旗| 乾安县| 文化| 长顺县| 鲁山县| 漠河县| 陇南市| 龙南县| 重庆市| 搜索| 黄浦区| 无为县| 临颍县|