제너레이터 선택 기준

제너레이터 선택 기준

핵심은 실행을 멈출 수 있는 생산자와 next 또는 for await로 값을 당겨오는 소비자를 분리해, 흐름 제어를 코드 구조 안에 드러내는 것입니다.

01

값을 나눠 만든다

전체 배열을 먼저 만들지 않고 필요한 값만 yield합니다.

02

소비자가 진행시킨다

next 호출이 다음 yield 지점까지 실행을 밀어 줍니다.

03

상태를 보존한다

지역 변수와 위치가 유지되어 이어서 계산할 수 있습니다.

04

종료 명시

return, throw, finally로 완료와 정리 경계를 드러냅니다.

일반 제너레이터

sync
  • 무한 ID, 페이지네이션 커서, 커스텀 이터러블에 적합
  • for...of와 next()가 같은 프로토콜 위에서 동작
  • Generator<Yield, Return, Next>로 입출력 타입을 분리

비동기 제너레이터

async
  • 네트워크, 파일, 이벤트처럼 늦게 도착하는 값에 적합
  • for await...of가 값이 준비될 때까지 기다린 뒤 소비
  • 스트림 중간 실패는 throw와 finally 경계로 정리

async/await

single
  • 최종 결과 하나를 기다리는 작업에는 가장 단순한 선택
  • 중간 값을 노출하지 않아도 되는 API 호출 흐름에 적합
  • 연속 값이 필요해지면 async function*로 확장 가능
타입 경계

타입 설계는 소비 방식에서 시작한다

yield 값과 return 값, next 입력값을 섞지 않으면 제너레이터의 중단점이 타입으로도 읽힙니다.

Yield 소비자에게 순차적으로 전달되는 값
Return done: true가 될 때의 최종 결과
Next 다음 재개 시 yield 표현식으로 들어오는 값