generator


  • 発生器は、収益率と呼ばれるブレークポイントのある関数です.
  • ジェネレータはnextとともに使用される.
  • ジェネレータは、呼び出し時に完成品の前に停止し、次の呼び出し時に次から実行します.
  • の中間点の収益率の後に値を追加すると、値に戻ります.
  • const gen = function* () {
    	console.log(1);
        yield;
        console.log(2);
        yield;
        console.log(3);
        yield 4;
    };
    const generator = gen();
    generator.next();
    -> 1 
    -> output: {value: undefined, done: false}
    
    generator.next();
    -> 2
    -> output: {value: undefined, done: false}
    
    // 중단점인 yield 뒤에 값을 넣어주면 value 값으로 리턴된다.
    generator.next();
    -> 3
    -> output: {value: 4, done: false}
    
    generator.next();
    -> output: {value: undefined, done: true}
    generator関数で普段タブー視されている無限の関数を書くことができます.
    let i = 0;
    const gen = generator*() {
    	while(true) {
        	yield i++;
        }
    }
    
    gen().next();
    -> output: {value: 0, done: false}
    
    gen().next();
    -> output: {value: 1, done: false}
    
    gen().next();
    -> output: {value: 2, done: false}
    
    .
    .
    .