JavaScript

Generator オブジェクト

 編集:2022.08.23 by T.A.

Generator オブジェクトはジェネレーター関数によって返され、の両方に準拠しています。

コンストラクター

このオブジェクトを直接インスタンス化することはできません。代わりに、ジェネレーター関数から Generator のインスタンスを返すことができます。

//コンソールにて
function* generator() {
  yield 1;
  yield 2;
  yield 3;
}
const gen = generator(); // "Generator { }"

¶→GeneratorFunctionコンストラクター:不明

インスタンス メソッド
Generator.next()
yield 式で得られた値を返します。
Generator.return()
与えられた値を返し、ジェネレーターを終了します。
Generator.throw()
ジェネレーターにエラーを投げます。(そのジェネレーターの中からキャッチされない限り、ジェネレーターも終了します)
無限イテレーター
//コンソールにて
function* infinite() {
    let index = 0;
    while (true) {
        yield index++;
    }
}
const generator = infinite(); // "Generator { }"

console.log(generator.next().value); // 0
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
// ...
function* Gen(){
  let Idx=0;
  while(Idx<2){
    yield Idx++;
  }
}
G=Gen(); //=[object]:[object Generator]
D=G.next(); //=[object]:[object Object]
	//value=[number]:0
	//done=[boolean]:false
D=G.next(); //=[object]:[object Object]
	//value=[number]:1
	//done=[boolean]:false
D=G.next(); //=[object]:[object Object]
	//value=[undefined]:undefined
	//done=[boolean]:true

テスト