본문 바로가기

프로그래밍/RxJava

[RxJava] Observable 클래스

Observable은 데이터 흐름에 맞게 알림을 보내 구독자가 데이터를 처리할 수 있도록 한다.

RxJava 1.x에서는 데이터 소스를 Observable Single 클래스로 구성했다.

RxJava 2.x에서는 여전히 두 클래스가 존재하지만, Observable, Maybe, Flowable 클래스로 구분해 사용한다.

간단하게 설명하자면

Maybe 클래스는 reduce()함수나 firstElement()함수와 같이 데이터가 발행될 수 있거나, 혹은 발행되지 않고도 완료가 되는 경우를 의미한다.

Flowable 클래스는 Observable에서 데이터가 발행되는 속도가 구독자가 처리하는 속도보다 현저하게 빠른경우 즉, 배압이슈(Back Pressure)에 대응하는 기능을 추가 제공한다.

 

RxJava 1.x

RxJava 2.x

Observable

Observable

Maybe

Flowable

Observable 클래스

Observable은 옵저버(Observer) 패턴을 구현한다. 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자(옵저버) 목록을 객체에 등록한다. 그리고 상태 변화가 있을 때 마다, 메서드를 호출하여 객체가 직접 목록의 각 옵저버에게 변화를 알려준다. 라이프 사이클은 존재하지 않고, 보통 단일 함수를 통해 변화만 알린다.

 

사용자가 버튼을 누르면 버튼에 미리 등록해 둔 onClick() 메소드를 호출해 원하는 처리를 하는 것이 옵저버 패턴의 대표적인 예이다.

RxJava의 Observable은 세가지의 알림을 구독자에게 전달한다.

1. onNext : Observable이 데이터의 발행을 알린다. 기존의 옵저버 패턴과 같다.

2. onComplete : 모든 데이터의 발행을 완료했음을 알린다. 단 한번만 발생하고, 발생한 후에 onNext 이벤트가 발생해서는 안된다.

3. onError : Observable에서 어떤 이유로 에러가 발생했음을 알린다. onError 이벤트가 발생하면 이후에 onNext 및 onComplete 이벤트는 발생하지 않는다. 즉, 실행이 종료된다. 자세한 내용은 예외처리 부분을 공부할 때 포스팅하겠다.

'프로그래밍 > RxJava' 카테고리의 다른 글

[RxJava] Observable - create()함수  (0) 2020.02.11
[RxJava]Observable - just()함수  (0) 2020.02.11
[RxJava] 마블 다이어그램 보는 방법  (0) 2020.02.11
[RxJava] RxJava 학습 순서  (0) 2020.02.11
[RxJava] Hello RxJava2!  (0) 2020.02.07