flutter

인프런 코드팩토리 Dart - Async Programming

Apr 13, 2023

Async Programming

import 'dart:async';

void main() {
  final controller = StreamController();
  final stream = controller.stream.asBroadcastStream();

  final streamListener1 = stream.where((val) => val % 2 == 0).listen((val) {
    print('Listener 1 : ${val}');
  });

  final streamListener2 = stream.where((val) => val % 2 == 1).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);
  controller.sink.add(6);

  calculate(1).listen((val){
    print('calculate(1): $val');
  });

  calculate(4).listen((val){
    print('calculate(4): $val');
  });
}
void main() {
  calculate(1).listen((val){
    print('calculate(1): $val');
  });

  calculate(4).listen((val){
    print('calculate(4): $val');
  });
}

Stream<int> calculate(int number) async* {
  for (int i = 0; i < 5; i++) {
    yield i * number;
    await Future.delayed(Duration(seconds: 1));
  }
}
void main() {
  playAllCalculate().listen((val){
    print('$val');
  });
}

Stream<int> playAllCalculate() async* {
  yield* calculate(4);
  yield* calculate(100);
}

Stream<int> calculate(int number) async* {
  for (int i = 0; i < 5; i++) {
    yield i * number;

    await Future.delayed(Duration(seconds: 1));
  }
}