반응형
코틀린의 코루틴에 대해 익숙해졌다가
이번에 챗봇 만들 때 파이썬의 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을 달지 않았기에 == 값을 기다릴 필요가 없다고 설정했기에 그런 것.
반응형
'[Flutter]' 카테고리의 다른 글
Flutter에서 sp, dp 사용하기 (1) | 2023.04.21 |
---|---|
[Flutter] iOS FCM 추가 구현 및 주의 (0) | 2023.04.16 |
Flutter Floor Migration ( 컬럼 추가 / 필드 추가 / 데이터베이스 업데이트) (0) | 2022.12.31 |
Flutter 안드로이드 위젯 구현 / 특정 화면으로 routing하기 (0) | 2022.12.27 |
Flutter에서 Android 동작 원리 (0) | 2022.12.25 |