🎯 Dart에서 async/await 사용법 및 실무 팁

Dart 문법

초급 난이도
문법 타입
10/24 등록일

Dart에서 async/await 사용법 및 실무 팁

초급
태그
기초 문법 입문 async-await 비동기
## 개요
`async/await`는 비동기 작업을 간결하게 처리하기 위한 Dart 문법으로, Flutter 앱에서 네트워크 요청이나 데이터 로딩 시 UI 스레드를 블로킹하지 않도록 설계되었습니다. 동기식 코드처럼 작성하면서도 백그라운드에서 실행되는 비동기 작업을 제어할 수 있습니다.

## 주요 특징
- **비동기 처리 간소화**: 콜백 체인 대신 직관적인 코드 구조로 작성 가능
- **예외 처리 용이**: try-catch 문으로 비동기 예외를 자연스럽게 처리
- **Future 통합**: `Future` 타입과 완전히 호환되어 네트워크/데이터 처리에 적합

## 사용법
```dart
import 'package:http/http.dart' as http;
import 'dart:convert';

Future<void> fetchData() async {
final response = await http.get(Uri.parse('https://api.example.com/data'));
if (response.statusCode == 200) {
final data = json.decode(response.body);
print(data['key']);
} else {
throw Exception('Failed to load data');
}
}

// 호출 시 사용
void main() async {
try {
await fetchData();
} catch (e) {
print('Error: $e');\n }
}
```
- `async` 키워드로 메서드를 비동기 처리
- `await`로 Future 타입의 결과를 동기식으로 얻음
- 예외 처리는 try-catch 구조로 감싸야 함

## 주의사항
- **비동기 함수에서 return 사용**: `async` 메서드에서는 `return` 대신 `throw`로 예외 처리
- **혼합 사용 금지**: 동기/비동기 코드를 혼합하면 런타임 오류 발생 가능
- **메모리 누수 방지**: 비동기 작업 완료 후 리소스 해제 필수

## 관련 문법
- `Future`: 비동기 처리 기초 타입
- `Stream`: 실시간 데이터 흐름 관리
- `async`/`await`: Future를 간결하게 사용하는 연산자
- `try-catch`: 예외 처리 구조
코드 예제
import 'package:http/http.dart' as http;
import 'dart:convert';

void main() async {
  try {
    final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
    if (response.statusCode == 200) {
      final data = json.decode(response.body);
      print('제목: ${data['title']}');
    } else {
      throw Exception('요청 실패: ${response.statusCode}');
    }
  } catch (e) {
    print('에러 발생: $e');
  }
}
등록일: 2025년 10월 24일 02:33
언어 정보
언어
Dart
카테고리
Mobile
인기도
#15
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요