Iterator와 yield

제너레이터 실행 흐름

제너레이터는 한 번에 끝나는 함수가 아니라 next 호출마다 yield 지점까지 실행하고 상태를 보존하는 이터레이터입니다.

function*1
next()2
yield value3
done4
01

이터레이터 생성

제너레이터 함수를 호출하면 즉시 실행되지 않고 iterator 객체가 만들어집니다.

02

next 호출

next가 호출될 때 함수 본문이 다음 yield 지점까지 진행됩니다.

03

상태 보존

yield 이후 지역 변수와 실행 위치가 보존되어 다음 호출에서 이어집니다.

04

완료 처리

return에 도달하면 done이 true가 되고 이후 반복이 종료됩니다.

타입 기준

  • Generator<Yield, Return, Next>의 세 타입 위치를 구분합니다.
  • yield*는 다른 iterable의 값을 위임해 순서대로 내보냅니다.
  • async generator는 Promise와 iterator 흐름이 함께 섞입니다.

핵심 표현

function*생성기
yield값 방출
next재개
done종료