generator生成器與yield

2021-09-26 07:35:26 字數 985 閱讀 8494

普通函式–一路執行到底

generator函式–可以暫停執行

yield是什麼

yield是es6的新關鍵字,使生成器函式執行暫停,yield關鍵字後面的表示式的值返回給生成器的呼叫者。它可以被認為是乙個基於生成器的版本的return關鍵字。

yield關鍵字實際返回乙個iteratorresult(迭代器)物件,它有兩個屬性,value和done,分別代表返回值和是否完成。

yield無法單獨工作,需要配合generator(生成器)的其他函式,如next,懶漢式操作,展現強大的主動控制特性。

function

*show()

let gun=

show()

;gun.

next()

;//彈出a

//踹一下走一下

gun.

next()

;//彈出b

核心

yield 傳參 ,返回

function

*show()

//傳參

gun.

next(5

)gun.

next(12

)

返回

function

*show()

let gun=

show()

;let res1=gun.

next()

console.

log(res1)

//列印出來的res1是乙個json物件

//let res2=gun.

next()

console.

log(res2)

//最後一步結果return實現

Generator生成器基礎

生成器函式是es6提供的一種非同步程式設計解決方案,語法行為與傳統函式完全不同 function gen let iterator gen console.log iterator 不會輸出hello 是乙個迭代器物件 需要呼叫next方法才會輸出 iterator.next 輸出結果 yield相...

Python程式設計 generator生成器

列表生成式 lst for i in range 10 print lst 0,2,4,6,8,10,12,14,16,18 相當於 lst i 2 for i in range 10 print lst 0,2,4,6,8,10,12,14,16,18 lst i 2 for i in range...

PHP 生成器Generator理解

寄凡 風雪之隅 php手冊 生成器 generator 引用自官網 生成器提供了一種更容易的方法來實現簡單的物件迭代,相比較定義類實現iterator介面的方式,效能開銷和複雜性大大降低。生成器允許你在foreach 塊中寫 來迭代一組資料而不需要在記憶體中建立乙個陣列,那會使你的記憶體達到上限 劃...