상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 다트의 Future와 Stream의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Dart는 비동기 프로그래밍을 지원하기 위해 `Future`와 `Stream`이라는 두 가지 주요 개념을 제공합니다. 이 두 개념은 비동기 작업을 처리하는 데 사용되지만, 그 사용 목적과 동작 방식에서 중요한 차이점이 있습니다. 아래에서 이 두 개념의 차이점을 자세히 설명하겠습니다. Future `Future`는 단일 비동기 작업의 결과를 나타냅니다. 즉, `Future`는 특정 시점에 완료될 수 있는 작업을 나타내며, 이 작업이 완료되면 결과값을 반환하거나 오류를 발생시킬 수 있습니다. `Future`는 다음과 같은 특징을 가지고 있습니다: 1. 단일 값 : `Future`는 하나의 값만을 반환합니다. 이 값은 작업이 완료된 후에 사용할 수 있습니다. 2. 완료 상태 : `Future`는 세 가지 상태를 가질 수 있습니다: - 대기 중 (Pending) : 작업이 아직 완료되지 않은 상태. - 완료 (Completed) : 작업이 성공적으로 완료되어 결과값을 반환한 상태. - 오류 (Error) : 작업이 실패하여 오류를 발생시킨 상태. 3. 비동기 처리 : `Future`는 비동기적으로 실행되며, `<a href='https://sangseek.com/sangseeks/async/ko'>async</a>`와 `await` 키워드를 사용하여 비동기 작업을 쉽게 처리할 수 있습니다. 예를 들어, HTTP 요청을 보내고 응답을 기다리는 작업은 `Future`를 사용하여 처리할 수 있습니다: ```dart Future<String> fetchData() async { // 비동기 작업 수행 await Future.delayed(Duration(seconds: 2)); return '데이터 수신 완료'; } void main() async { String data = await fetchData(); print(data); // '데이터 수신 완료' 출력 } ``` Stream `Stream`은 여러 개의 비동기 이벤트를 처리하는 데 사용됩니다. 즉, `Stream`은 시간에 따라 발생하는 여러 개의 값이나 이벤트를 나타냅니다. `Stream`의 주요 특징은 다음과 같습니다: 1. 다수의 값 : `Stream`은 여러 개의 값을 순차적으로 전달할 수 있습니다. 이는 데이터가 지속적으로 생성되거나 발생하는 경우에 유용합니다. 2. 이벤트 기반 : `Stream`은 이벤트 기반으로 작동하며, 데이터가 생성될 때마다 리스너에게 알림을 보냅니다. 3. 비동기 반복 : `Stream`은 `await for` 구문을 사용하여 비동기적으로 반복할 수 있습니다. 이를 통해 스트림에서 발생하는 각 이벤트를 처리할 수 있습니다. 예를 들어, 주기적으로 데이터를 생성하는 경우 `Stream`을 사용할 수 있습니다: ```dart Stream<int> countStream() async* { for (int i = 1; i <= 5; i++) { await Future.delayed(Duration(seconds: 1)); yield i; // 각 값을 스트림에 추가 } } void main() async { await for (int value in countStream()) { print(value); // 1, 2, 3, 4, 5를 1초 간격으로 출력 } } ``` 요약 - Future : 단일 비동기 작업의 결과를 나타내며, 하나의 값 또는 오류를 반환합니다. 주로 비동기 작업이 완료될 때까지 기다리는 데 사용됩니다. - Stream : 여러 개의 비동기 이벤트를 처리하며, 시간에 따라 발생하는 여러 값을 순차적으로 전달합니다. 주로 지속적으로 발생하는 데이터나 이벤트를 처리하는 데 사용됩니다. 이러한 차이점으로 인해, `Future`와 `Stream`은 각각의 상황에 맞게 적절히 선택하여 사용할 수 있습니다. 비동기 작업이 단일 결과를 반환할 때는 `Future`를, 여러 개의 이벤트나 값을 처리해야 할 때는 `Stream`을 사용하는 것이 좋습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기