※ 동일한 오퍼레이션을 두 개 이상 선언하면 doOn* 은 선언 순서대로, doAfter* 은 선언 역순으로 실행된다.
doOnComplete
마지막 요소가 방출될 때, onCompelete 바로 전에 실행됨. onComplete와 마찬가지로, 에러가 발생하면 실행되지 않음.
doOnDispose
구독을 해지했을 때 실행됨.
doOnNext
요소를 방출할 때, onNext 바로 전에 실행됨.
doOnError
오퍼레이션 중 에러가 발생했을 경우, onError 바로 전에 실행됨.
doOnEach
doOnComplete, doOnNext, doOnError의 통합 버전. Notification<?>을 아규먼트로 받아 isOnComplete, isOnNext, isOnError로 각각에 맞는 처리를 할 수 있음.
doOnSubscribe
구독 시, onSubscribe 바로 전에 실행됨.
doOnLifecyle
doOnSubscribe, doOnDispose의 통합 버전.
doOnTerminate
Observable이 종료될 때, onComplete 또는 onError 바로 전에 실행됨. doOnComplete 또는 doOnError가 선언되어 있다면 선언한 순서대로 실행됨. (업스트림 -> 다운스트림)
doAfterNext
요소를 방출할 때, onNext 바로 후에 실행됨.
doAfterTerminate
Observable이 종료될 때, onComplete 또는 onError 후에 실행됨. (cancel, dispose시에는 실행되지 않음) doFinnally가 선언되어 있다면 그 후에 실행됨.
doFinally
Observable이 종료될 때 실행됨. doAfterTerminate가 Observable의 완료 또는 에러에 대해서만 실행되지만, doFinally는 cancel, dispose시에도 실행된다. doAfterTerminate가 선언되어 있다면 doFinally가 먼저 실행된다.
실행 순서
doOnSubscribe -> doOnNext -> onNext -> doAfterNext -> 선언 순서에 따라 doOnComplete / doOnError 또는 doOnTermitate -> doFinally -> doAfterTerminate
'Java > RxJava' 카테고리의 다른 글
RxJava2 스케쥴러 쓰레드 기아 현상 (Scheduler Thread Starvation Problem) (0) | 2020.06.04 |
---|---|
RxJava2 ConnectableObservable 에러 처리 유의사항 (0) | 2020.05.15 |
RxJava2 병렬 처리 (0) | 2020.05.13 |
RxJava2 요소에 따라 파이프라인 다르게 적용하기 (0) | 2020.05.12 |
subscribeOn, observeOn (0) | 2020.04.21 |