Dart의 Future와 async/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
async와 await 키워드는 비동기 코드를 더 읽기 쉽게 작성할 수 있도록 도와줍니다. 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 블록과 함께 사용할 수 있습니다.
참고
'프론트엔드 > Flutter' 카테고리의 다른 글
flutter 디자인 패턴 모음 (0) | 2024.07.28 |
---|---|
flutter firestore 시작하기 - firebase 데이터베이스 (0) | 2024.07.25 |
flutter SQLite 데이터베이스 저장 (1) | 2024.07.25 |
flutter에서 바텀 네비게이션 바(Bottom Navigation Bar) (0) | 2024.07.24 |
flutter 주요 버튼 위젯 모음 (1) | 2024.07.24 |