반응형
Future
비동기 프로그래밍에 사용되는 기능
Future<T> 로 사용하는데 미래에 T 타입의 값이 들어온다.
void main(List<String> arguments) async {
print(await futureInt());
// await이 없다면 완성된 상태가 아니기 때문에 Future instance가 나온다.
}
Future<int> futureInt() async {
return Future(() {
print('완료');
return 3;
});
// delay를 통해 실행 한다면 Duration이 지난 후 완료된다.
}
Completed 상태와
Uncompleted 상태가 있다.
완료되기 전에는 그저 Future Instance 이지만 완료된다면 T타입의 값이 들어온다.
실행 중 에러가 발생한다면 에러를 담고 Completed 상태가 된다.
Handling Error
try {
print('Awaiting user order...');
var order = await fetchUserOrder();
print(order);
} catch (err) {
print('Caught error: $err');
}
Future<String> fetchUserOrder() {
var str = Future.delayed(
const Duration(seconds: 4),
() => throw 'Cannot locate user order');
return str;
}
try catch 하는 방법과
외부에서 .catchError 하는 방식이 있다.
await을 사용할 거면 try catch.
future를 던질거면 .then .catchError.
async await이 최신이고 편하기 때문에 try catch 방식을 더 많이 사용하는 듯 하다.
반응형
'Flutter > Dart' 카테고리의 다른 글
[Dart] 기본 - UnitTest (1) | 2023.12.18 |
---|---|
[Dart] 기본 - Error Handling (0) | 2023.12.11 |
[Dart] 기본 - Enum (0) | 2023.12.08 |
[Dart] 기본 - HashCode (1) | 2023.12.07 |
[Dart] 기본 - 추상클래스, 인터페이스 (2) | 2023.12.05 |