TypeScript · async

for await...of 비동기 반복 타임라인

소비자가 다음 값을 요청하면 Promise가 해결될 때까지 기다렸다가 값을 하나씩 처리하는 흐름입니다.

비동기 반복 단계

async iterator

consumer loop

for await가 iterator.next를 순서대로 호출합니다.

pending promise

값 준비 전에는 루프 본문이 멈춰 있습니다.

yield value

생산자가 준비된 값을 하나씩 넘깁니다.

process item

본문에서 값을 처리한 뒤 다음 요청으로 넘어갑니다.

done true

더 이상 값이 없으면 루프가 끝납니다.

next() await promise yield handle item done

정리

비동기 반복은 여러 Promise를 한꺼번에 던지는 것이 아니라 생산 속도와 소비 속도를 맞춰 순차 처리하는 방식입니다.