

Dart 문법 비동기 - StreamDart/비동기2024. 8. 22. 17:17
Table of Contents
Stream이란?
Stream은 '일련의' 비동기 이벤트를 가리키는 것으로, 계산이 종료된 비동기 작업의 결과를 순차적으로 받아오는 역할을 하는 이벤트 큐(event queue)이다.
주요 특징:
- 연속적인 비동기 데이터를 처리한다.
- 이벤트는 값, 에러, 또는 완료(done) 신호일 수 있다.
- 비동기 제네레이터 함수(async*)를 통해 생성된다.
Stream 생성 및 사용
Stream은 주로 async* 키워드를 사용한 비동기 제네레이터 함수를 통해 생성된다.
코드 분석
- countStream 함수:
- async* 키워드로 비동기 제네레이터 함수로 선언된다.
- Stream<int>를 반환 타입으로 지정한다.
- yield 키워드를 사용하여 값을 스트림에 전달한다.
- sumStream 함수:
- async 키워드로 비동기 함수로 선언된다.
- await for 문을 사용하여 스트림의 값을 순차적으로 처리한다.
- main 함수:
- async 키워드로 비동기 함수로 선언된다.
- await를 사용하여 sumStream 함수의 결과를 기다린다.
Stream의 주요 개념
- 비동기 제네레이터 함수 (Asynchronous Generator Function):
- async* 키워드로 선언된다.
- Stream<T>를 반환 타입으로 가진다.
- yield 키워드를 사용하여 값을 스트림에 전달한다.
- 동기 제네레이터 함수 (Synchronous Generator Function):
- sync* 키워드로 선언된다.
- Iterable<T>를 반환 타입으로 가진다.
- await for 문:
- 스트림에서 값을 순차적으로 받아오는 데 사용된다.
- async 함수 내에서만 사용 가능하다.
Stream의 장점
- 연속적인 데이터 처리: 실시간 데이터, 파일 읽기, 네트워크 응답 등을 처리하는 데 적합하다.
- 메모리 효율성: 대량의 데이터를 한 번에 메모리에 로드하지 않고 순차적으로 처리할 수 있다.
- 비동기 프로그래밍 간소화: 복잡한 비동기 작업을 직관적으로 표현할 수 있다.
Stream 사용 시 주의사항
- 리소스 관리: 스트림을 더 이상 사용하지 않을 때는 반드시 닫아주어야 한다.
- 에러 처리: 스트림 처리 중 발생할 수 있는 에러를 적절히 처리해야 한다.
- 백프레셔(Backpressure) 관리: 데이터 생성 속도가 처리 속도보다 빠를 경우 적절한 전략이 필요하다.
'Dart > 비동기' 카테고리의 다른 글
Dart 문법 비동기 - async, await (0) | 2024.08.22 |
---|---|
Dart 문법 비동기 - Future (0) | 2024.08.22 |
Dart 문법 비동기 - 동기 vs 비동기 프로그래밍 (0) | 2024.08.22 |

@codeJunH :: codeJunH의 IT 공부 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!