64㎡年輕小夫妻的家,三居改一居,安放屋主的所有喜好!
2023-01-30
更新時間:2022-03-31 21:06:08作者:未知
生成器是由生成器的函數(shù)和生成器的迭代器組成,通過構(gòu)造函數(shù)Generator創(chuàng)建的對象,生成器也是一種迭代器,同時又是一個可迭代對象,但是只能對其迭代一次。這是因為它們并沒有把所有的值存在內(nèi)存中,而是在運行時生成值。你通過遍歷來使用它們,要么用一個“for”循環(huán),要么將它們傳遞給任意可以進行迭代的函數(shù)和結(jié)構(gòu)。大多數(shù)時候生成器是以函數(shù)來實現(xiàn)的。
創(chuàng)建生成器:生成器的創(chuàng)建,必須使用生成器函數(shù)(Generator Function)。
生成器函數(shù)的寫法:
function*method(){
}
執(zhí)行生成器函數(shù)內(nèi)部:生成器函數(shù)內(nèi)部是為了給生成器的每次迭代提供的數(shù)據(jù);每次調(diào)用生成器的next方法,將導(dǎo)致生成器函數(shù)運行到下一個yield關(guān)鍵字位置;yield是一個關(guān)鍵字,該關(guān)鍵字只能在生成器函數(shù)內(nèi)部使用,表達“產(chǎn)生”一個迭代數(shù)據(jù)。
需要注意的細節(jié):
1、生成器函數(shù)可以有返回值,返回值出現(xiàn)在第一次done為true時的value屬性中;
2、調(diào)用生成器的next方法時,可以傳遞參數(shù),傳遞的參數(shù)會交給yield表達式的返回值;
3、第一次調(diào)用next方法時,傳參沒有任何意義;
4、在生成器函數(shù)內(nèi)部,可以調(diào)用其他生成器函數(shù),但是要注意加上*號。
生成器的其他API:
return方法:調(diào)用該方法,可以提前結(jié)束生成器函數(shù),從而提前讓整個迭代過程結(jié)束;
throw方法:調(diào)用該方法,可以在生成器中產(chǎn)生一個錯誤。