[flutter] future vs stream

Edward Hyun·2021년 11월 17일
0

app&web-dev

목록 보기
11/178

future는 일시적으로 데이터를 받을 때 사용 : http로 get할 때 많이 사용 async선언 필요
stream은 데이터를 계속 받을 때 사용 --> async * 선언해줘야 함
stream은 return이 아니라 yield 로 데이터를 보냄.

import 'dart:async';

Future<int> sunStream(Stream<int> stream) async{
	var sum = 0;
    await for (var value in stream){
    	sum += value;
        print(sum);
    }
    return sum;
}
Stream<int> countStream(int to) async*{
	for(int i=1;i<to;i++){
    	await Future.delayed(const Duration(seconds:1));
        yield i;
    }
}

var transformer = new StreamTransformer<int, String>.fromHandlers(handleData : (value, sink) {
	sink.add("value: $value");
});
// 스트림은 중간에 값을 조작하는 것도 가능하다. 입력값은 int, 출력은 String
// 스트림은 하나만 선언해 줘야 함. 다중 스트림은 다르게.
// sink는 입구, stream은 출구

main() async{
	var stream = countStream(10);
  stream.transform(transformer).listen((value)=>print(value));
//	stream.listen((value)=>{
//    	print("current value: " + value.toString())
//    });
//    var sum = await sumStream(stream);
//    print(sum);
}
        

참고 :: https://www.youtube.com/watch?v=AKOUDHZsBP0&t=852s

profile
앱&웹개발(flutter, vuejs, typescript, react), 인공지능(nlp, asr, rl), 백엔드(nodejs, flask, golang, grpc, webrtc, aws, msa, nft, spring cloud, nest.js), 함수형 프로그래밍(scala, erlang)을 공부하며 정리합니다.

0개의 댓글