Flutter
Flutter - Future, async, await
바차
2021. 10. 7. 00:15
반응형
[Future]
- 미래에 구체적인 결과물로 실제적인 객체로 반환된다는 의미
- 일종의 약속이자, 해당 결과를 추후에 확인 가능하다는 의미
- Future 클래스는 일정 소요시간이 지난 후에 실제 데이터 값이나, 에러가 있는 경우 에러를 반환한다.
- Future 클래스는 Future<String>같이, 제네릭처럼 어떤 결과물을 받아야 할지 미리 지정해둘 수 있다.
- Future<void>와 일반 void 함수의 차이점은 언제 함수의 실행이 끝날지 지정해 줄수 있다는 것.
[async]
- async 클래스는 await 메서드를 가지고 있다.
- await 으로 선언된 메서드는 응답이 처리될 때 까지 대기하는 비동기 식으로 동작한다.
- async제어자는 항상 중괄호 앞에 선언해야 한다. 선헌하게 되면 await 키워드를 사용할 수 있게 된다.
[예제 코드]
import 'dart:io';
void main() {
showData();
}
void showData() async{
startTask();
String account = await accessData();
fetchData(account);
}
void startTask() {
String info1 = '요청 수행 시작';
print(info1);
}
Future<String> accessData() async{
String account;
Duration time = Duration(seconds: 3);
if (time.inSeconds > 2) {
//sleep(time);
// await 키워드는 Future.delayed의 실행이 다 될때까지 기다리라는 의미
await Future.delayed(time, () {
account = '8,500만원';
print(account);
});
} else {
String info2 = '데이터를 가져왔습니다.';
print(info2);
}
return account;
}
void fetchData(String account) {
String info3 = '잔액은 $account 입니다.';
print(info3);
}
300x250