Page 25 -
P. 25

이에 비해 RxJava 2.x 버전의 Observable과 Observer 구성은 Reactive Streams를 구현
                    하지 않아서 Reactive Streams 인터페이스를 사용하지 않습니다. 하지만 기본적인 메커니
                    즘은 Flowable과 Subscriber 구성과 거의 같습니다. 생산자인 Observable에서 구독 시                       1

                    작(onSubscribe), 데이터 통지(onNext), 에러 통지(onError), 완료 통지(onComplete)를 하면
                    Observer에서 이 통지를 받습니다.                                                            RxJava의 기본
                    다만 Observable과 Observer 구성은 통지하는 데이터 개수를 제어하는 배압 기능이 없기 때문

                    에 데이터 개수를 요청하지 않습니다. 그래서 Subscription을 사용하지 않고, Disposable이라
                    는 구독 해지 메서드가 있는 인터페이스를 사용합니다. 이 Disposable은 구독을 시작하는 시점
                    에 onSubscribe 메서드의 인자로 Observer에 전달됩니다. Disposable에는 구독 해지를 위한 다

                    음 2개의 메서드가 있습니다.

                       표 1-5 Disposable의 메서드
                     메서드                  설명
                     dispose              구독을 해지한다.
                     isDisposed           구독을 해지하면 true, 해지하지 않으면 false를 반환한다.



                    그래서 Observable과 Observer 간에 데이터를 교환할 때 Flowable과 Subscriber처럼 데이터
                    개수 요청은 하지 않고 데이터가 생성되자마자 Observer에 통지됩니다.




                    1.3.2 연산자


                    RxJava에서는 생산자(Flowable/Observable)가 통지한 데이터가 소비자(Subscriber/Observer)

                    에게 도착하기 전에 불필요한 데이터를 삭제하거나 소비자가 사용하기 쉽게 데이터를 변환
                    하는 등 통지하는 데이터를 변경해야 할 때가 있습니다. 이때 사용하는 메서드는 Flowable/
                    Observable의 메서드에서 새로운 Flowable/Observable을 반환하며, 이 메서드를 연결해나
                    감으로써 최종 데이터를 통지하는 Flowable/Observable을 생성합니다. 이 내용은 자바 8의

                    Stream을 사용한 경험이 있는 사람이라면 쉽게 이해할 수 있습니다. RxJava에서는 이처럼 통지
                    하는 데이터를 생성하거나 필터링 또는 변환하는 메서드를 연산자(operator)라고 합니다.









                                                                                                  033





     RxJava 리액티브 프로그래밍(본문)최종.indd   33                                                      2019-03-26   오전 11:26:31
   20   21   22   23   24   25   26   27   28   29   30