一般的函式只有一次返回值 ,但是我們的generator可以給我們返回多次
做乙個簡單的相親網demo會更明白一些:
1.generator的結構為
function* numbers()
//然後乙個生成器
const gen = numbers();
//gen並不是像es5中為乙個方法,這裡列印並不需要()
console.log(gen)
function* nmubers()
const gen = nmubers();//gen並不是像es5中為乙個方法,這裡列印並不需要()
console.log(gen.next())//
console.log(gen.next())//
//以上為什麼同樣的東西列印出來卻有兩種結果?如果你把方法裡的yield關鍵字注釋後再列印你會發現兩次結果都為true
(0,1,1) -->0+1=1.1+1=2 這樣的演算法
//斐波那契數列
function fib(max)
return arr;
}//斐波那契最開始都是(0,1,1,2,3)-->0+1=1,1+1=2 這樣的乙個過程
console.log(fib(5))//[ 0, 1, 1, 2, 3 ]
console.log(fib(10))//[ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ]
function* fib(max) :}}
}const namearray = ['henry','bucky','emily'];
const names = nameiterator(namearray);
console.log(names.next())//
console.log(names.next())//
console.log(names.next())//
console.log(names.next())//
console.log(names.next())//
demotwo
//demo two
function* saynames()
const name = saynames();
console.log(name.next())
console.log(name.next())
console.log(name.next())
/** *
*/
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 塊中寫 來迭代一組資料而不需要在記憶體中建立乙個陣列,那會使你的記憶體達到上限 劃...