[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을 달지 않았기에 == 값을 기다릴 필요가 없다고 설정했기에 그런 것.
반응형