본문 바로가기

프로그래밍/RxJava

[RxJava-2] Observable 에 대하여

RxJava 를 처음 시작하는데 장벽이 높은 이유 중에 하나는 이해해야 할 단어들이 많기 때문이라고 생각합니다.

비동기 프로그래밍을 공부하고 싶어서 RxJava 를 검색하면 어떤 책이든 블로그든 Observable, Operator 등 새로운 개념들이 쏟아집니다. 하나식 알아가 볼까요?

 

[RxJava-1] 에서 ReactiveX 를 관찰 가능한(observable) 비동기적인 데이터 흐름(stream) 함수 형태로 프로그래밍하는 API 이라고 했습니다. 

Observable(옵저버블) 은 단어 뜻 그대로 관찰 가능한 것입니다. RxJava는 Observable(옵저버블)을 사용해 데이터 흐름을 만들고, Observer(관찰자)가 이 Observable 을 관찰하고 있다가, 데이터가 전달되면 그 데이터를 처리하는 라이브러리입니다. 

 

Observable 은 여러 데이터스트림(Data Stream)중에 하나이고,  데이터스트림(Data Stream) 에는 Single, Maybe, Completable, Flowable 등이 있습니다. 

 

Observable 은 여러 Operator(연산자) 함수를 가지고 있고, just(), create() 등의 함수를 사용해 데이터의 흐름을 만듭니다. 

Subscribe(구독하다) 은 이런 데이터의 흐름을 실제로 구독하기 위한 함수입니다. Subscribe() 를 호출해야 실제 데이터를 발행합니다. 

subscribe() 와 반대로 구독을 해지하는 함수도 있습니다. 이미 데이터 발행을 완료한 경우 Dispose(처분하다) 함수를 사용해 더이상 데이터를 발행하지 않도록 구독을 해지해야 합니다.

 

Observable 에는 뜨거운 Observable 과 차가운 Observable 이 있습니다.

차가운 Observable 은 Observable 을 선언하고 여러 함수를 호출해도 subscribe() 하지 않으면 데이터를 발행하지 않습니다. 

반면에 뜨거운 Observable 은 구독 여부와 관계 없이 데이터를 발행하는 Observable 입니다.

 


 

[정리]

Observable 은

1. Observer 가 관찰하고 있다가, 데이터가 전달되면 그 데이터를 처리하는 프로그래밍 방식이다.

2. 여러 데이터 소스 중에 하나이다.

3. 여러 Operater를 가지고 있고, Subscribe()을 해야 실제 데이터를 발행한다.

4. Observable 이 데이터 발행을 완료한 경우 Dispose() 를 사용해 구독을 해지해야 한다.