더북(TheBook)

1.4.3 모든 것이 스트림이다

스트림의 개념은 원격 HTTP 호출에서 받은 바이트 데이터부터 단일 정수에 이르기까지 값을 가진 모든 데이터 요소에 적용할 수 있습니다. RxJS는 스트림을 구독하고 관리하기 위해 일급 객체로 데이터를 전달하고 다른 스트림들과 결합할 수 있는 경량 데이터 타입을 제공합니다. 바로 이 스트림을 다루고 사용하는 방법을 배우는 것이 이 책의 핵심 주제 중 하나입니다. 그러나 지금은 특정 RxJS 객체를 언급하지 않고 Stream이라는 추상 데이터 타입이 있다고 가정합니다. 즉, 다음과 같이 단일 값으로 스트림 하나를 만들 수 있습니다.

Stream(42);

이때 스트림은 스트림을 듣는 구독자(또는 옵저버)가 있을 때까지 실제로 아무 일도 하지 않고 유휴 상태로 있습니다. 이는 생성되자마자 작업을 실행하는 Promise와는 매우 다릅니다. 어떻게 보면 스트림은 구독자가 연결된 후에만 실행하므로 지연(lazy) 데이터 타입이라 볼 수 있습니다. 다음 예에서 스트림 영역으로 들어온 값 42가 적어도 하나의 구독자를 탐색하거나 구독자에게 전파됩니다. 구독자가 값을 받게 되면 스트림이 완료됩니다.

Stream(42).subscribe(
val => { -- 스트림에서 각 이벤트와 함께 호출될 간단한 함수를 사용합니다.
  console.log(val); //-> 42 출력
}
);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.