12.2 제너레이터

  • 이터레이터를 이용해 자신의 실행을 제어하는 함수

제너레이터의 새로운 개념

  1. 함수의 실행을 개별적 단계로 나눔으로써 함수의 실행을 제어

  2. 실행 중인 함수와 통신

제너레이터의 특징

  1. 제너레이터는 언제든 호출자에게 제어권을 넘길 수 있음

  2. 제너레이터는 호출한 즉시 실행되지 않음

    1. 대신 이터레이터를 반환, 이터레이터의 next메서드를 호출함에 따라 실행

제너레이터 만드는 방법

  • function 키워드 뒤에 애스터리스크(*) 붙여줌

  • return 외에 yield 키워드 사용 가능

[예제]

function* rainbow() { // 제너레이터 생성
    yield 'red';
    yield 'orange';
    yield 'hot pink';
    yield 'soft pink';
    yield 'purple';
    yield 'indigo';
    yield 'green';
  }

  const it = rainbow(); // 제너레이터 호출
  it.next(); // {value: "red", done: false}
  it.next(); // {value: "orange", done: false}
  it.next(); // {value: "hot pink", done: false}
  it.next(); // {value: "soft pink", done: false}
  it.next(); // {value: "purple", done: false}
  it.next(); // {value: "indigo", done: false}
  it.next(); // {value: "green", done: false}

  for (let color of rainbow()) {
    console.log(color); // value만 찍힘
  }

Last updated