플러터/플러터 기초

[플러터 기초] Dart 비동기 프로그래밍

  • -
반응형

비동기란?

동기는 모든 코드가 순차적으로 진행되는 형태를 말한다. (원래 우리가 짠 코드가 진행되는 방식)

비동기는 반대로 코드가 동시다발적으로 실행되는 형태를 말한다.

 

비동기 프로그래밍 방식

비동기 프로그래밍 방식이 두 가지가 존재한다.
또한 이 두 가지는 용도가 정확하게 나누어져 있다.

Future - async - await

응답을 한번만 돌려 받을 때 사용된다.
예를 들어, 서버에서 데이터를 한번 불러올 때 사용

Stream - async* - yield

지속적으로 응답을 돌려 받아야할 때 사용된다.
예를 들어 - 1초마다 어떤 데이터를 바꿔야할 때 사용

 

비동기 프로그래밍 예시 코드 및 결과

Future - async - await 예시 코드

void main() {
  Future<void> waiting(int second) async {
    await Future.delayed(Duration(seconds:second));
    print("$second 초 만큼 기다렸습니다.");
  }
  waiting(3);
  waiting(1);
  waiting(2);
}

과연 결과는 어떻게 나올까?

분명 3초, 1초, 2초 순으로 메서드를  호출했는데, 1초, 2초, 3초 순으로 출력이 된다.
그 이유는 동시에 실행되기 때문에 가장 빨리 끝나는 1초부터 출력하게 된다.

Stream - async* - yield 예시 코드

void main() {
  Stream<int> repeatedlyData() async*{
    int counter = 0;
    
    while(counter <= 5){
      counter++;
      await Future.delayed(Duration(seconds: 1));
      print("실행중 $counter 초");
      yield counter;
    }
    print("실행 완료");
  }

  repeatedlyData().listen((e){});
}

실행 결과는 아래와 같다.

Stream을 사용하는 방법은 이 글에서 자세히 다룰 수 없어 위와 같은 간단한 예시로 설명했다.

기회가 된다면 추가적인 게시글을 올려야겠다.

 

오늘은 여기서 끝!

이 두 가지는 플러터를 이용해 개발을 하면 언젠가 만나게 되는 친구들이다.

한번씩 이해하고 넘어 가는 것이 좋다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 구독, 공감 부탁드립니다.