Page 35 -
P. 35

replay

                    replay 메서드는 원래 Cold인 Flowable/Observable에서 ConnectableFlowable/Connectable
                    Observable을 생성하는 연산자입니다. 이 메서드로 생성한 ConnectableFlowable/Connectable               1
                    Observable은 통지한 데이터를 캐시하고, 처리를 시작한 뒤에 구독하면 캐시된 데이터를 먼저
                    새로 구독한 소비자에게 통지합니다. 그 뒤에는 모든 소비자에게 같은 데이터를 통지합니다. 또                               RxJava의 기본
                    한, replay 메서드는 인자가 없으면 모든 데이터를 캐시하고 인자가 있으면 인자로 지정한 시간

                    동안 지정한 개수만큼의 데이터를 캐시합니다.



                    share
                    share 메서드는 여러 소비자가 구독할 수 있는 Flowable/Observable을 생성합니다. 다른 메

                    서드와 달리 ConnectableFlowable/ConnectableObservable을 생성하지 않는 점에 주의해
                    야 합니다. 이 share 메서드에서 생성한 Flowable/Observable은 구독하는 소비자가 있는 동안
                    은 도중에 새로 구독해도 같은 타임라인에서 생성되는 데이터를 통지합니다. 즉, 실질적으로는

                    flowable.publish().refCount()와 같습니다.

                      Note   Hot Flowable/Observable 처리 중 통지되는 데이터

                      Hot Flowable/Observable은 처리 도중에 구독되면 그 이후에 생성된 모든 데이터를 소비자에게 통지합니다. 하지
                      만 소비자의 처리 속도가 느리면 소비자들이 같은 데이터를 같은 시점에 받지 않을 수 있으므로 주의해야 합니다. 예
                      를 들어, 소비자의 처리 속도가 다른 상태에서 처리를 시작한 뒤에 일정 시간이 지나면 이미 구독하던 소비자는 해당
                      시점에 통지된 데이터가 아닌 아직 소비되지 않고 버퍼에 쌓인 데이터를 받게 됩니다. 하지만 나중에 추가된 소비자는
                      해당 시점에 버퍼에 쌓인 데이터가 없으므로 최신 데이터를 받게 됩니다. 따라서 이전부터 구독하던 소비자는 버퍼에
                      쌓인 오래된 데이터를 받아 처리하지만, 나중에 구독한 소비자는 이와 상관없이 최신 데이터를 받아 처리하게 됩니다.






                    1.4         마블 다이어그램                                          RxJava








                    이번에는 시간 경과에 따른 데이터 변화를 시각화한 마블 다이어그램을 알아보겠습니다.

                    RxJava의 JavaDoc이나 ReactiveX 문서를 읽다 보면 화려한 원형이나 사각형 등의 도형과 화살
                    표가 들어간 그림이 나옵니다. 이러한 그림을 마블 다이어그램(marble diagram)이라고 하며, 리액티

                                                                                                  043





     RxJava 리액티브 프로그래밍(본문)최종.indd   43                                                      2019-03-26   오전 11:26:32
   30   31   32   33   34   35