本文實例講述了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程序設計有所幫助。
新聞熱點
疑難解答