생성기 함수 (generator) 쓰는 법

서재환·2022년 2월 16일
0

JavaScript

목록 보기
24/25

generator 함수의 특징

보통 함수는 함수가 종료되지만 generator 함수는 종료를 할 수도 하지 않을 수도 있다.
제너레이터 함수를 첫번째 실행시켰을 때 일반함수와 달리 자기 자신을 실행시키지 않는다.
실행시키는데 필요한 도구를 갖고 있는 객체를 만들어서 넘겨준다.

해당 객체에는 여러가지 도구들이 있는데 핵심적인 도구는 next()라는 메서드이다. 해당 
메서드는 제네레이터 함수 본체 실행을 재개시킬 수 있는 함수이다.
function* infiniteEnergyGenerator() {
  let energy = 1;
  while (true) {
    const booster = yield energy;
    
    if (booster) {
      energy += booster;
    } else {
      energy++;
    }
  }
}

const energyGenerator = infiniteEnerygyGenerator();

for (let i = 0; i < 5; i++) {
  console.log(energyGenerator.next());
}
제너레이터 함수는 function 옆에 별표를 붙여서 만든다. yield라는 키워드가 새로 등장하는데
해당 키워드의 역할은 멈추는 역할을 수행한다. 그리고 yield 뒤에 있는 값을 호출자에게 돌려줍
니다. next()의 반환값으로 energy 값을 돌려준다. 
정확한 동작원리를 파악하지 못했다. 해당 개념을 이해하기 위해선 이터러블에 개념에 대한 이해가
선행되어야 하는 것 같다.

0개의 댓글