Skip to content

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);
}

Clone this wiki locally