Flutter/Dart

[Dart] 기본 - Future

코르피 2023. 12. 15. 09:45
반응형

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