파일 스트림
lineAsyncGenerator<string>
줄이 준비될 때마다 문자열을 yield하고, 소비자는 메모리에 전체 파일을 올리지 않습니다.
파일, 웹소켓, DB 커서는 도착 방식은 달라도 next가 Promise를 돌려주고 for await가 값을 하나씩 기다린다는 점이 같습니다.
AsyncGenerator<string>
줄이 준비될 때마다 문자열을 yield하고, 소비자는 메모리에 전체 파일을 올리지 않습니다.
AsyncIterable<string>
메시지가 들어온 순서대로 처리하고, break로 필요한 시점에 연결 소비를 멈출 수 있습니다.
AsyncGenerator<DbRecord[]>
결과를 페이지 단위로 받아서 처리하므로, 대량 데이터도 순차적인 흐름으로 다룰 수 있습니다.
[Symbol.asyncIterator]()
next(): Promise<IteratorResult<T>>
AsyncIterable<T>가 명확하면 for await 루프 안의 item도 T로 좁혀집니다. 그래서 line.length, page.map 같은 사용 가능 여부를 컴파일 단계에서 확인할 수 있습니다.