Future
Future는 하나의 비동기 작업을 처리하기 위해 사용되는 객체로, 주로 비동기적인 결과가 한 번 반환될 때 사용합니다. 예를 들어, API 호출이나 파일 읽기 같은 작업에서 사용됩니다.
특징
- 작업이 완료될 때 값을 반환하거나, 오류가 발생하면 에러를 반환합니다.
- async와 await 키워드를 사용해 Future를 비동기적으로 처리할 수 있습니다.
Future 처리 방법
- then 메서드: Future 작업이 완료된 후 실행될 콜백 함수를 지정합니다.
- async/await: 코드가 동기적으로 보이게 작성할 수 있습니다.
Stream
Stream은 여러 비동기 데이터 이벤트를 지속적으로 받아야 할 때 사용됩니다. 데이터가 여러 번 발생할 수 있으며, 각각의 데이터가 발생할 때마다 구독자(subscriber)에게 전달됩니다. 채팅 메시지 수신이나 실시간 센서 데이터 같은 시나리오에 적합합니다.
특징
- 데이터를 연속적으로 스트리밍합니다.
- Stream을 사용하여 실시간으로 데이터를 구독할 수 있습니다.
- Single Subscription Stream과 Broadcast Stream 두 가지 타입이 있습니다.
- Single Subscription Stream: 한 번에 하나의 리스너만 구독할 수 있습니다. 일반적으로 API 호출과 같은 단일 작업에 사용됩니다.
- Broadcast Stream: 여러 리스너가 구독할 수 있으며, 이벤트가 발생할 때마다 모든 리스너가 알림을 받습니다. 주로 여러 구독자가 필요한 실시간 데이터에 사용됩니다.
Future 처리 방법
- listen 메서드: 데이터를 구독하고 이벤트가 발생할 때마다 호출되는 콜백 함수를 지정합니다.
- await for 구문: async/await 패턴으로 stream의 이벤트를 처리할 수 있습니다.
Future와 Stream의 차이점 요약
| 속성 | Future | Stream |
|---|
| 데이터 전달 횟수 | 한 번 (단일 데이터) | 여러 번 (연속적 데이터) |
| 사용 예시 | API 요청 결과, 파일 읽기 | 실시간 데이터, 채팅 메시지, 위치 데이터 |
| 비동기 처리 방식 | then, async/await | listen, await for |