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 |