ES6生成器用法實(shí)例分析
本文實(shí)例講述了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!";
}
你沒有看錯(cuò),這就是JavaScript代碼。是不是和你曾經(jīng)認(rèn)識的javascript不太一樣。這個(gè)函數(shù)就叫做生成器函數(shù)。生成器函數(shù)看起來和普通的函數(shù)是不是有點(diǎn)相像呢?
它們的區(qū)別如下:
一般的函數(shù)以function開頭,而生成器函數(shù)以function* 開頭。
生成器函數(shù)中有一個(gè)特殊關(guān)鍵字就是yield,作用就是暫停函數(shù)。配合next方法來調(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īng)用
生成器可以用來異步編程,我在之前的文章中有過介紹,可以參考前面一篇《基于javascript的異步編程實(shí)例詳解》
但是需要注意的是,生成器并不是用來寫異步的,這僅僅是一種hack手段而已。
希望本文所述對大家ECMAScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
微信小程序自定義頂部導(dǎo)航欄并適配不同機(jī)型實(shí)例詳解
這篇文章主要為大家介紹了微信小程序開發(fā)自定義頂部導(dǎo)航欄并適配不同機(jī)型的實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Layer.js實(shí)現(xiàn)表格溢出內(nèi)容省略號顯示,懸停顯示全部的方法
今天小編就為大家分享一篇Layer.js實(shí)現(xiàn)表格溢出內(nèi)容省略號顯示,懸停顯示全部的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript實(shí)現(xiàn)簡單的計(jì)算器
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡單的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
js中g(shù)etter和setter用法實(shí)例分析
這篇文章主要介紹了js中g(shù)etter和setter用法,結(jié)合實(shí)例形式分析了javascript中g(shù)etter和setter的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08
js判斷手機(jī)瀏覽器操作系統(tǒng)和微信瀏覽器的方法
做手機(jī)端的前端開發(fā),少不了對手機(jī)平臺的判斷。如,對于app下載,就要判斷在Android平臺下就顯示Android下載提示;在iOS平臺下就顯示iOS下載提示2016-04-04
JavaScript創(chuàng)建一個(gè)object對象并操作對象屬性的用法
這篇文章主要介紹了JavaScript創(chuàng)建一個(gè)object對象并操作對象屬性的用法,實(shí)例分析了javascript使用object類定義對象及屬性的用法,需要的朋友可以參考下2015-03-03
KnockoutJS 3.X API 第四章之click綁定
click綁定主要作用是用于DOM元素被點(diǎn)擊時(shí)調(diào)用相關(guān)JS函數(shù)。這篇文章主要介紹了KnockoutJS 3.X API 第四章之click綁定,感興趣的朋友一起看看吧2016-10-10

