TIL: Flutter | Dart (13) 비동기 처리 Stream - 221215

Lumpen·2022년 12월 16일
0

Dart

목록 보기
13/20

future가 하나의 데이터를 .then() 으로 전달받았다면
stream 은 연속된 데이터를 .listen() 을 통해 비동기적으로 처리할 수 있다
스트리밍 서비스의 동작 방식과 같다

stream

stream 은 구독자 패턴(Observer pattern) 이다
관찰 대상을 구독하여 변화 발생 시 구독자에게 변화를 알린다

stream 생성

stream 을 통해 하나의 데이터 전송을 하는 경우

main() {
	print('start')
    var stream = Stream.value(100).listen((dynamic x) => print('getDate: $x'));
    print('end');
}

stream controller

stream 에 직접 이벤트를 지정하여 일회성이 아닌 지속적 통신을 할 수 있다
기본적으로 stream 에 대한 구독자는 하나만 등록할 수 있다
2개 이상의 구독자를 연결할 때는 StreamController.broadcast();

import 'dart: async';
main() {
	print('start')
    
    StreamController streamControl = StreamController.broadcast();
    StreamCtrl.stream.listen((x) => print('listen 1 = $x'));
    StreamCtrl.stream.listen((x) => print('listen 2 = $x'));
    
    streamControl.add(100);
    streamControl.add(200);
    streamControl.add(300);
    streamControl.close();
    print('end');
}
profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글