日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6入门之Generator函数

發(fā)布時(shí)間:2023/11/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6入门之Generator函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Generator

Generator函數(shù)是ES6提供的一種異步編程解決方案,Generator函數(shù)是一個(gè)狀態(tài)機(jī),封裝了多個(gè)內(nèi)部狀態(tài)。

執(zhí)行Generator函數(shù)會(huì)返回一個(gè)遍歷器對(duì)象,也就是說,Generator函數(shù)除了狀態(tài)機(jī),還是一個(gè)遍歷器對(duì)象生成函數(shù)。返回的遍歷器對(duì)象,可以依次遍歷Generator函數(shù)內(nèi)部的每一個(gè)狀態(tài)。

Generator的兩個(gè)特征:

  • function關(guān)鍵字與函數(shù)名之間有一個(gè)星號(hào)
  • 函數(shù)體內(nèi)部使用yield(產(chǎn)出)語句,定義不同的內(nèi)部狀態(tài)
function* helloWorldGenerator() {yield 'hello';yield 'world';return 'ending'; }var hw = helloWorldGenerator(); hw.next() // { value: 'hello', done: false } hw.next() // { value: 'world', done: false } hw.next() // { value: 'ending', done: true } hw.next() // { value: undefined, done: true }

yield語句

由于Generator函數(shù)返回的遍歷器對(duì)象,只有調(diào)用next方法才會(huì)遍歷下一個(gè)內(nèi)部狀態(tài),所以其實(shí)提供了一種可以暫停執(zhí)行的函數(shù)。yield語句就是暫停標(biāo)志。

yield和return

相似:都能返回緊跟在語句后面的那個(gè)表達(dá)式的值

區(qū)別:

  • 每次遇到y(tǒng)ield,函數(shù)暫停執(zhí)行,下一次再從該位置繼續(xù)向后執(zhí)行,而return語句不具備位置記憶的功能
  • 一個(gè)函數(shù)里面,只能執(zhí)行一次(或者說一個(gè))return語句,但是可以執(zhí)行多次(或者說多個(gè))yield語句。

在使用for...of時(shí)自動(dòng)遍歷Generator函數(shù),不需要調(diào)用next方法

yield*語句

如果在Generater函數(shù)內(nèi)部,調(diào)用另一個(gè)Generator函數(shù),默認(rèn)情況下是沒有效果的。這個(gè)就需要用到y(tǒng)ield*語句,用來在一個(gè)Generator函數(shù)里面執(zhí)行另一個(gè)Generator函數(shù)。

function* bar() {yield 'x';yield* foo();yield 'y'; }// 等同于 function* bar() {yield 'x';yield 'a';yield 'b';yield 'y'; }// 等同于 function* bar() {yield 'x';for (let v of foo()) {yield v;}yield 'y'; }for (let v of bar()){console.log(v); } // "x" // "a" // "b" // "y"

?

轉(zhuǎn)載于:https://www.cnblogs.com/sker/p/5520697.html

總結(jié)

以上是生活随笔為你收集整理的ES6入门之Generator函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。