generator handshake

next와 yield는 값을 주고받으며 실행 위치를 옮긴다

제너레이터는 호출 즉시 실행되지 않고, next가 들어올 때마다 다음 yield 지점까지 움직입니다.

first next

첫 호출은 실행 시작

generator.next()가 함수 본문을 처음 열고 첫 번째 yield까지 진행합니다.

yield out

yield는 밖으로 값 전달

yield 1{ value: 1, done: false }를 반환하고 그 줄에서 멈춥니다.

next input

다음 next 값은 안으로

next(5)의 5는 멈춰 있던 이전 yield 표현식의 결과가 됩니다.

return

끝나면 done true

return 값은 마지막 value가 되고, 이후 next는 더 이상 새 값을 만들지 않습니다.