[Flutter]

Await 실험

Hevton 2023. 4. 12. 00:24
반응형

 

코틀린의 코루틴에 대해 익숙해졌다가

 

이번에 챗봇 만들 때 파이썬의 async await 에 익숙해졌다가

 

다시 Flutter를 해야해서..

 

Future<void> ll() async {
  
  await Future.delayed(Duration(seconds: 3));
  print('john');
 
}

Future<String> init() async {
  
  ll();
  
  return "hello";
}

void main() async {
  
  print(ll());
  
  
  await Future.delayed(Duration(seconds: 5));


  print('hello');
  
}

 

출력

Instance of '_Future<void>'
john
hello

 

ll()은 코루틴, 비동기이다. 값을 받아보려면 await으로 기다려야함.

 

 

 


async 붙인 함수는 언제든지 나갔다 온다. 파이썬에서도 그렇다. 코루틴이다.

이게 그걸 증명해준다.

Future<void> ll() async {
  
  await Future.delayed(Duration(seconds: 3));
  print('john');
 
}

Future<String> init() async {
  
  ll();
  
  return "hello";
}

void main() async {
  
  print(await init());
  
  
  await Future.delayed(Duration(seconds: 5));

  
}

 

출력

hello
john

 

init을 호출한다 -> ll에서 3초를 기다려야하는데, 그 새 ll 함수를 나와서 return "hello"를 먼저 진행해버린다.

ll() 앞에 await을 달지 않았기에 == 값을 기다릴 필요가 없다고 설정했기에 그런 것.

반응형