본문 바로가기

Flutter

dart(3) - 비동기 프로그래밍

비동기 : 코드가 동시다발적으로 실행

동기 : 모든 코드가 순차적으로 진행

 

 

async / await /Future : 1회만 응답을 돌려받음

async* / yield / Stream : 지속적으로 응답을 돌려받는 경우

 

 

1회만 응답을 돌려받는 경우이다.

void main(){
  
  Future<void> todo(int second) async {
    await Future.delayed(Duration(seconds: second));
    print('TODO Done in $second seconds');
  }
  
  todo(3);
  todo(1);
  todo(5);
}
TODO Done in 1 seconds
TODO Done in 3 seconds
TODO Done in 5 seconds

 

 

 

지속적으로 응답을 받는 경우

void main(){

  Stream<int> todo() async*{
    print('TODO');
    int counter = 0;

    while(counter <= 10){
      counter++;
      await Future.delayed(Duration(seconds: 1));
      print('TODO is Running $counter');
      yield counter;  // counter를 돌려줌
    }

    print('ToDO is Done');
  }

  todo().listen((event) { });
}
TODO
TODO is Running 1
TODO is Running 2
TODO is Running 3
TODO is Running 4
TODO is Running 5
TODO is Running 6
TODO is Running 7
TODO is Running 8
TODO is Running 9
TODO is Running 10
TODO is Running 11
ToDO is Done

'Flutter' 카테고리의 다른 글

플러터 위젯 - 예시  (0) 2024.03.13
Flutter 위젯  (0) 2024.03.12
dart(2) - 예외처리  (0) 2024.03.11
Flutter 설치  (0) 2024.03.10
Dart 기초  (0) 2024.03.09