Dart Asynchronous


Dart에서 비동기(asynchronous) 프로그래밍은 중요한 주제입니다. Dart에서 비동기 작업을 처리하는 주요 방법은 다음과 같습니다:

  1. async 및 await 키워드: Dart에서 비동기 코드를 작성할 때 async 함수와 await 키워드를 사용합니다. async 키워드는 함수가 비동기적으로 실행될 수 있음을 나타내며, await 키워드는 비동기 함수에서 다른 비동기 함수가 완료될 때까지 기다릴 수 있게 합니다. 예시:
   Future<void> fetchData() async {
       var data = await fetchDataFromServer();
       print(data);
   }
  1. Future 및 Stream: Dart에서 비동기 작업을 수행하는 기본적인 방법은 FutureStream을 사용하는 것입니다. Future는 단일 비동기 작업의 결과를 나타내고, Stream은 연속적인 이벤트 스트림을 나타냅니다. 예시:
   Future<String> fetchDataFromServer() {
       return Future.delayed(Duration(seconds: 2), () => 'Data from server');
   }

   Stream<int> countStream() async* {
       for (int i = 0; i < 5; i++) {
           await Future.delayed(Duration(seconds: 1));
           yield i;
       }
   }
  1. Completer: Completer 클래스를 사용하여 직접적으로 Future를 완료시킬 수 있습니다. 이는 일반적으로 Future를 사용할 때 콜백 기반의 코드를 Future로 감싸거나, 비동기 작업을 직접 제어해야 할 때 유용합니다. 예시:
   Future<String> fetchUserData() {
       Completer<String> completer = Completer<String>();
       // 비동기 작업 수행 후 completer.complete()로 완료
       return completer.future;
   }
  1. Error Handling: Dart에서는 try-catch 블록을 사용하여 비동기 작업에서 발생하는 예외를 처리할 수 있습니다. 또한, Future 체인에서 catchError를 사용하여 에러를 처리할 수 있습니다. 예시:
   Future<void> fetchData() async {
       try {
           var data = await fetchDataFromServer();
           print(data);
       } catch (e) {
           print('Error fetching data: $e');
       }
   }

이러한 도구들을 사용하여 Dart에서 비동기 코드를 효과적으로 작성하고 관리할 수 있습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *