Flutter/기본
[Flutter 기본] 비동기 처리 - Future, async, await 키워드
익은벼
2022. 7. 13. 01:19
반응형
Future와 async, await는 비동기식 프로그램 구현을 위한 키워드이다.
비동기 처리는 시간이 오래 걸리는 특정 로직의 실행이
끝날 때까지 기다려주지 않고 나머지 코드를 먼저 실행하고, 완료된 경우
해당 처리 결과를 즉시 반환한다.
일반적인 비동기 처리 예는 아래와 같다.
- 네트워크를 통해 데이터를 수신
- 데이터베이스에 쓰기
- 파일에서 데이터 읽기
Future<List<Image>?> fetchImage() async{
List<Image>? results = await fetchImageFromServer();
return results;
}
- async는 해당 함수가 비동기 처리를 진행하는 함수라는 뜻이다.
- await는 오래 걸리는 작업 앞에 붙는 키워드로 오래 걸리는 작업이
완료되기를 기다리겠다는 키워드이다.
- async와 await를 사용해 작성된 비동기 함수는 정상적으로 처리된 경우
결과 값으로 List<Image> 를 가져온다.
- 비동기 작업처럼 오래 걸리는 작업은 과정 중 예기치 못한 에러나
이벤트가 발생할 수 있다.
즉, 결과 값이 List<Image> 라고 보장할 수 없다.
이런 상태를 방지하기 위해 비동기 함수의 return 타입은
항상 Future 타입으로 완료된다.
정상적으로 처리했다면 List<Image> 로 반환될 수 있지만,
그렇지 않을 수도 있다는 것을 표현한 키워드가 Future이다.
반응형