이터러블객체 → [Symbol.iterator]호출 → 이터레이터객체반환 → next메소드호출 → result객체반환

제네레이터

function* counter() {
  console.log('첫번째 호출');
  yield 'ㅇㅇ';                  // 첫번째 호출 시에 이 지점까지 실행된다.
  console.log('두번째 호출');
  yield 2;                  // 두번째 호출 시에 이 지점까지 실행된다.
  console.log('세번째 호출');  // 세번째 호출 시에 이 지점까지 실행된다.
}

const generatorObj = counter();

console.log(generatorObj.next()); // 첫번째 호출 {value: ㅇㅇ, done: false}
console.log(generatorObj.next()); // 두번째 호출 {value: 2, done: false}
console.log(generatorObj.next()); // 세번째 호출 {value: undefined, done: true}

제너레이터의 활용