Future를 철저히 파헤쳐 보자

테디준·2022년 11월 18일
1

1. Future의 기본 개념

void main() {
  int number = getNumber();
  print(number);
}

Future<int> getNumber() async {
  await Future.delayed(const Duration(seconds: 3));
  return 1;
}

위의 코드의 getNumber()는 Future라서 int로 받을 수는 없다고 에러가 뜬다. 아무리 함수 안에 숫자가 들어있다고 해도 서로 타입이 다르면 안되기 때문이다. 제대로 고친다면 다음과 같다.

void main() async {
  int number = await getNumber();
  print(number);
}

Future<int> getNumber() async {
  await Future.delayed(const Duration(seconds: 3));
  return 1;
}

Future타입인 getNumber()가 1을 반환할 때까지 기다리고 숫자를 받으면 그걸 int에 넣는다는 것이다. 그 기다리는 코드가 async-await다. 비동시 함수는 무조건 Future타입이다.

2. Future를 callback 함수(then)으로 받는다.

void main() {
  getNumber().then((value)=>print(value));
}

Future<int> getNumber() async {
  await Future.delayed(const Duration(seconds: 3));
  return 1;
}

3. Future와 일반함수의 실행순서

void main() {
  getNumber().then((value)=>print(value));
  print(2);
  print(3);
}

Future<int> getNumber() async {
  await Future.delayed(const Duration(seconds: 3));
  return 1;
}

1개의 댓글

comment-user-thumbnail
2022년 11월 30일

잘 보고 갑니다

답글 달기