반응형

Dart의 Futureasync/await는 비동기 프로그래밍을 지원하는 핵심 개념입니다.

이들 개념을 사용하면 비동기 작업을 더 쉽게 작성하고 관리할 수 있습니다.

 

Future

 

Future는 비동기 작업의 결과를 나타내는 객체입니다. 이 객체는 작업이 완료되었을 때 결과를 제공하거나 오류를 전달합니다. Future는 JavaScript의 Promise와 유사합니다.

 

Future 사용 예제

 

1. Future 생성

Future 사용 예제

 

1. Future 생성

Future<String> fetchUserOrder() {
  // 2초 후에 'Order Complete' 반환
  return Future.delayed(Duration(seconds: 2), () => 'Order Complete');
}

 

2. then() 사용

void main() {
  fetchUserOrder().then((order) {
    print(order); // 'Order Complete' 출력
  }).catchError((error) {
    print('Error: $error');
  });
}

async 및 await

 

asyncawait 키워드는 비동기 코드를 더 읽기 쉽게 작성할 수 있도록 도와줍니다. async 함수는 Future를 반환하며, await 키워드는 Future가 완료될 때까지 기다린 후 결과를 반환합니다.

 

async 및 await 사용 예제

 

1. async 함수 정의

 

Future<void> fetchUserOrder() async {
  try {
    String order = await Future.delayed(Duration(seconds: 2), () => 'Order Complete');
    print(order); // 'Order Complete' 출력
  } catch (e) {
    print('Error: $e');
  }
}

2. async 함수 호출

void main() {
  fetchUserOrder();
  print('Fetching user order...'); // 먼저 출력됨
}

 

자세한 설명

 

1. Future

비동기 작업을 표현: Future는 비동기 작업의 완료(성공/실패)를 표현합니다.

메서드:

then: Future가 완료될 때 호출될 콜백을 등록합니다.

catchError: Future가 실패할 때 호출될 콜백을 등록합니다.

whenComplete: Future가 완료되면 성공 여부와 상관없이 호출될 콜백을 등록합니다.

2. async

함수를 비동기로 표시: 함수에 async를 붙이면 해당 함수는 Future를 반환합니다.

비동기 코드 작성: async 키워드를 사용하면 코드가 비동기로 실행되며, 함수는 즉시 Future를 반환합니다.

3. await

Future가 완료될 때까지 기다림: await 키워드를 사용하면 Future가 완료될 때까지 기다리고, 완료 후 결과를 반환합니다.

try-catch와 함께 사용: 비동기 작업에서 발생하는 오류를 처리하기 위해 try-catch 블록과 함께 사용할 수 있습니다.

 

 

참고

https://dart-ko.dev/codelabs/async-await

반응형

+ Recent posts