

Dart 문법 비동기 - FutureDart/비동기2024. 8. 22. 17:00
Table of Contents
Future란?
Future 클래스는 종료되지 않은 비동기 계산의 결과를 가리키는 것으로, 작업의 결과값을 나중에 받기로 약속하는 것이다.
비동기 프로그래밍에서는 작업의 결과를 기다리지 않고 Future'(나중에 결과와 함께 계산이 종료될 것임)를 즉시 반환한다.
Future 사용 예제
다음은 Future를 사용한 간단한 예제이다:
코드 분석
- Future.delayed 사용:
- Future.delayed는 Future 클래스의 네임드 생성자(named constructor)이다.
- 지정된 시간이 경과한 후에 지정된 함수를 수행하는 Future 객체를 생성한다.
- 비동기 함수 정의:
- fetchOrder1()과 fetchOrder2() 함수는 각각 4초, 2초 후에 메시지를 출력한다.
- 함수의 반환 타입은 Future<void>로, 작업이 끝날 때까지 기다리지 않고 Future를 즉시 반환한다.
- 비동기 실행:
- main() 함수에서 fetchOrder1()과 fetchOrder2()가 순서대로 호출되었지만, 실행 결과는 호출 순서와 다르다.
- 이는 비동기 실행으로 인해 작업 완료를 기다리지 않고 다음 코드로 진행되기 때문이다.
- 실행 순서:
- main() 함수의 print 문이 먼저 실행된다.
- 그 후 2초 뒤에 fetchOrder2()의 결과가 출력된다.
- 마지막으로 4초 뒤에 fetchOrder1()의 결과가 출력된다.
실행 흐름 도식화
시간 흐름 ────────────────────────────────────────────────>
main: ───┬───────┬───────┐
│ │ │
│ │ └─ "주문을 완료했습니다." 출력
│ │
│ └─ fetchOrder2() 호출 (2초 지연 시작)
│
└─ fetchOrder1() 호출 (4초 지연 시작)
2초 후: "아메리카노 주문이 완료되었습니다." 출력
4초 후: "라떼 주문이 완료되었습니다." 출력
Future의 장점
- 비차단 실행: 긴 작업을 기다리지 않고 다른 코드를 실행할 수 있다.
- 비동기 처리: I/O 작업, 네트워크 요청 등을 효율적으로 처리할 수 있다.
- 성능 향상: 여러 작업을 동시에 처리할 수 있어 전체적인 성능이 향상된다.
Future 다루기
Future를 더 효과적으로 다루기 위해 Dart는 async와 await 키워드를 제공한다:
이 방식을 사용하면 비동기 코드를 마치 동기 코드처럼 작성할 수 있어 가독성이 향상된.
'Dart > 비동기' 카테고리의 다른 글
Dart 문법 비동기 - Stream (0) | 2024.08.22 |
---|---|
Dart 문법 비동기 - async, await (0) | 2024.08.22 |
Dart 문법 비동기 - 동기 vs 비동기 프로그래밍 (0) | 2024.08.22 |

@codeJunH :: codeJunH의 IT 공부 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!