ジェネレーター関数とは
ジェネレーター関数は、function*を使って定義し、yieldキーワードを使って、関数の 実⾏を⼀時停⽌し、後で再開することができる。
function* 関数名() {
yield 値;
}
function *generator() {
yield 1
yield 2
yield 3
yield 4
yield 5
}
const g = generator() // g は Generator オブジェクト(関数名)
const g = generator()
console.log(g.next()).value); // { value: 1, done: false }
console.log(g.next()).value); // { value: 2, done: false }
console.log(g.next()).value); // { value: 3, done: false }
console.log(g.next()).value); // { value: 4, done: false }
console.log(g.next()).value); // { value: 5, done: false }
console.log(g.next()).value); // { value: undefined, done: true }
next() を呼び出すとジェネレーター関数の本体が実行され、yield に到達すると処理が呼び出し側に戻される。このときの戻り値はキー value とキー done を持つオブジェクトで、value には yield で返した値が入っていつ。続けてnext()を呼び出すと、ジェネレーター関数の本体が先程の続きから再び yield または本体の最後に到達するまで実行される。