다트의 Future와 Stream의 차이는 무엇인가요?
_____- Future : 단일 비동기 작업의 결과를 나중에 받을 수 있는 객체입니다. 비동기 연산이 완료되면 하나의 값(또는 오류)을 반환합니다.
- Stream : 여러 개의 비동기 데이터 이벤트들을 순차적으로 전달하는 연속적인 데이터 스트림입니다. 시간이 지남에 따라 여러 개의 데이터 값을 비동기로 받을 수 있습니다.
Q2: Future와 Stream의 주요 차이점은 무엇인가요?
- Future는 한 번만 완료되어 단일 값을 반환합니다.
- Stream은 여러 개의 데이터를 시간에 따라 순차적으로 전달할 수 있습니다.
Q3: 언제 Future를 사용해야 하나요?
- 단 한 번의 비동기 작업 결과가 필요할 때 (예: API 호출 후 단일 응답 받기).
- 미래에 한 번만 값을 받을 비동기 작업에 적합합니다.
Q4: 언제 Stream을 사용해야 하나요?
- 연속적으로 여러 데이터 이벤트를 받아야 할 때 (예: 채팅 메시지 수신, 실시간 위치 변화, 센서 데이터 스트림).
- 데이터가 시간이 지남에 따라 여러 번 발생할 수 있는 경우 적합합니다.
Q5: Future와 Stream의 상태 관리 방식은 어떻게 다른가요?
- Future는 비동기 작업이 완료되면 완료 상태(completed)를 가지며, 이후 더 이상의 값이 없습니다.
- Stream은 데이터 이벤트가 계속 발생할 수 있으며 완료될 때까지 열린 채로 유지되거나, 중간에 오류가 발생할 수도 있습니다.
Q6: Future와 Stream 사용 시 주요 함수 차이는 무엇인가요?
- Future는 `.then()`, `await` 등을 사용해 결과를 받습니다.
- Stream은 `.listen()`으로 이벤트 리스너를 등록해 여러 이벤트를 처리합니다.
Q7: Future를 Stream처럼 사용할 수 있나요?
- 직접 그렇게 하지는 않지만, Future 결과를 Stream으로 변환하는 것은 가능합니다(`Stream.fromFuture`).
- 반대로 Stream 첫 번째 이벤트만 Future로 받을 수도 있습니다.
Q8: Stream에는 어떤 종류가 있나요?
- Single-subscription Stream : 하나의 리스너만 등록 가능. 주로 네트워킹, 파일 읽기 등에 사용.
- Broadcast Stream : 여러 리스너가 동시에 구독 가능, 실시간 이벤트 처리에 적합.
Q9: Future와 Stream은 어떻게 메모리를 관리하나요?
- Future는 완료 후 자동으로 내부 리소스 해제.
- Stream은 리스너를 닫거나 취소(`cancel()`) 해야 리소스가 해제됩니다.
Q10: 요약하자면 Future와 Stream의 가장 큰 차이는?
- Future 는 "한 번 발생하는 이벤트"를 처리하는 반면,
- Stream 은 "여러 번 발생하는 이벤트"들을 처리한다는 점입니다.
작성자:
박시연 [비회원]
| 작성일자: 1년 전
2024-09-19 01:52:35
조회수: 124 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 124 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.