-
[RxJava] ObservableReactiveX 2021. 4. 29. 16:37
Observable
ReactiveX에서는 Observable을 구독하는 Observer가 존재하고, Observable이 이벤트를 발생시키면 Observer의 관찰자가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴하는 메커니즘 때문에, observable을 구독한다라고 표현한다. Subscribe 메서드를 통해 Observer와 Observable을 연결한다.
Observable은 다음의 3가지 이벤트를 사용하여 동작한다.
- onNext
Observable은 새로운 항목들을 배출할 때마다 이 메서드를 호출한다.
이 메서드는 Observable이 배출하는 항목을 파라미터로 전달 받는다.
- onError
Observable은 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 이 메서드를 호출한다.
이 메서드가 호출되면 onNext나 onCompleted는 더 이상 호출되지 않는다.
- onCompleted
오류가 발생하지 않았다면 Observable은 마지막 onNext를 호출한 후 이 메서드를 호출한다.
Hot, Cold Observable
'뜨거운' Observable은 생성되자 마자 항목들을 배출하기도 하기 때문에, 이 Observable을 구독하는 옵저버들은 어떤 경우에는 항목들이 배출되는 중간부터 Observable을 구독할 수 있다.
반대로, '차가운' Observable은 옵저버가 구독(subscribe)할 때 까지 항목을 배출하지 않기 때문에 이 Observable을 구독하는 옵저버는 Observable이 배출하는 항목 전체를 구독할 수 있도록 보장 받는다.
뜨거운 Observable의 예는 이벤트, 키보드 이벤트, 센서 데이터 등이다.
차가운 Observable의 예는 웹요청, 파일 읽기 등이다.
ConnectableObservable 클래스를 활용하면 차가운 Observable를 뜨거운 Observable 객체로 변환할 수 있다.
References
- https://reactivex.io/
- 유동환, 박정준, 리액티브 프로그래밍 기초부터 안드로이드까지 한번에, 한빛미디어
'ReactiveX' 카테고리의 다른 글
[RxJava] Scheduler (0) 2021.05.01 [RxJava] Single, Maybe (0) 2021.05.01 [RxJava] Operators(연산자) (0) 2021.04.30 마블 다이어그램(Marble diagrams) (0) 2021.04.29 [RxJava] Reactive (0) 2021.04.27