[Flutter/Dart] flutter Future 퓨처란 무엇인가

houndhollis·2023년 11월 12일
1
post-thumbnail

오늘은 일요일 내일 또 출근이라니..!

Future

미래! 말 그대로 미래다
Future 미래, 미래에서 받아올 값 정도로 정의하겠다.

void main() {
  Future.delayed(Duration(seconds: 2), () {
    print('Delayed 끝');
  });
  
  // Delayed 끝
}

delayed 지연하다 기본적으로 2개의 파라미터를 받는다.
1. 지연할 기간이 얼마나 되는지 Duration
2. 지연 시간이 지난 후 실행할 함수

Future - 1

void main() {
	addNumbers(1,1);
}

void addNumbers(int intNumber1, int intNumber2){
  print('계산 시작 $intNumber1 + $intNumber2');
  
  Future.delayed(Duration(seconds:2), (){
    print('계산 완료 ${intNumber1 + intNumber2}');
  });
  
  print('함수 완료');
}

실행 결과

계산 시작 1 + 1
함수 완료
계산 완료 2

뭔가 맘에 안든다. 계산 시작 - 계산 완료 - 함수 완료가 되어야 한다고 생각한다.
그래서 사용하는 방법 우리는 async를 사용하는 방법이다.

async 사용

void main() {
  addNumbers(1,1);
}

void addNumbers(int intNumber1, int intNumber2) async {
  print('계산 시작 $intNumber1 + $intNumber2');
  
  await Future.delayed(Duration(seconds:2), (){
    print('계산 완료 ${intNumber1 + intNumber2}');
  });
  
  print('함수 완료');
}

async 와 await를 걸어 우리가 원하는 로직을 만들어 냈다.
계산 시작 1 + 1
계산 완료 2
함수 완료

하지만 여기서 만약 addNumbers(1,1)밑에 비슷하게
addNumber(2,2)를 넣으면 첫번째 말고 같이 실행되서 async await를 main 함수 에다가도 걸어주고 싶은 마음이 생긴다.

방법은 함수에다가 Future를 걸어주는 방법이다.

Future<>

void main () async {
  await addNumbers(1,1);
  await addNumbers(2,2);
}

Future<void> addNumbers(int intNumber1, int intNumber2) async {
  print('계산 시작 $intNumber1 + $intNumber2');
  
  await Future.delayed(Duration(seconds:2), (){
    print('계산 완료 ${intNumber1 + intNumber2}');
  });
  
  print('함수 완료');
}

결과 값

계산 시작 1 + 1
계산 완료 2
함수 완료
계산 시작 2 + 2
계산 완료 4
함수 완료

뭔가 슬슬 감이 잡힌다. 다음에는 Stream에 대해서 깊게 다뤄볼 생각이다.

profile
한 줄 소개

0개의 댓글