Dart에서의 Future는 자바스크립트에서의 Promise에 대응된다. Future와 Promise는 모두 싱글스레드 환경에서 비동기 처리를 위해 존재한다.
Dart 및 Flutter의 많은 API 는 Future 타입을 리턴한다. 다음 코드는 비동기 코드를 시뮬레이트하기 위해 3초 후에 실행되는 Future 함수를 정의한 것이다.
var delay = Future.delayed(Duration(seconds:3));
Future는 성공(then)일 수도 있고 오류(catchError)일 수도 있다.
delay
.then((value) => print('I have been waiting'))
.catchError((err) => print(err));
async - await 는 비동기 코드를 작성할 때 더 깔끔한 코드를 제공한다. await 키워드는 해당 Future가 끝날 때까지 함수 실행을 일시 정지한다.
Future<String> runInTheFuture() async {
var data = await Future.value('World');
return 'Hello $data';
}