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() 를 사용해 구독을 해지해야 한다.
'프로그래밍 > RxJava' 카테고리의 다른 글
[RxJava] Subject 클래스 (0) | 2022.11.09 |
---|---|
[RxJava-4] 연산자 (Operator) (0) | 2021.10.27 |
[RxJava-3] 데이터 발행자(Data Source) : Observable 과 Single, Maybe, Completable (0) | 2021.10.27 |
[RxJava-1] Reactive Programming 과 ReactiveX 그리고 RxJava (0) | 2021.10.12 |