-
Notifications
You must be signed in to change notification settings - Fork 0
Dart(Async)
wonhopark89-dev edited this page Dec 21, 2022
·
2 revisions
void main() async {
Future<String> name = Future.value('테스트1');
Future<int> number = Future.value(1);
// print('Start');
// Future.delayed(Duration(seconds:2), () {
// print('Delay End');
// });
final result1 = await addNumbers(1,3);
final result2 = await addNumbers(2,4);
print('result1 + result2: $result1 + $result2 = ${result1+result2}');
}
Future<int> addNumbers(int num1, int num2) async {
print('함수 시작: $num1 + $num2');
final int sum = await Future.delayed(Duration(seconds:2), () {
print('계산: $num1 + $num2 = ${num1+num2}');
return num1+num2;
});
print('함수 완료: ${num1 + num2}');
return sum;
}
import 'dart:async';
void main() {
final controller = StreamController<int>();
// final stream = controller.stream;
final stream = controller.stream.asBroadcastStream();
final streamListener1 = stream.where((val) => val.isEven).listen((val) {
print('Listener 1: $val');
});
final streamListener2 = stream.where((val) => val.isOdd).listen((val) {
print('Listener 2: $val');
});
controller.sink.add(1);
controller.sink.add(2);
controller.sink.add(3);
controller.sink.add(4);
controller.sink.add(5);
calculate(5).listen((val) {
print('calculate(5): $val');
});
calculate(3).listen((val) {
print('calculate(3): $val');
});
// Stream 의 await 처리
playAllStream().listen((val){
print(val);
});
}
Stream<int> calculate(int number) async* {
for (int i = 0; i < 5; i++) {
yield i * number;
await Future.delayed(Duration(seconds: 1));
}
}
Stream<int> playAllStream() async* {
yield* calculate(2);
yield* calculate(100);
}