ReplaySubject
이전 시간에 공부한 replay() , cache
() 기능을 기억하는가.
이전에 배출한 모든 걸 캐싱해서 새로운 Observer
등록시 캐싱된걸 다시 배출시키는 역할이다.
ReplaySubject
는 그 기능을 가진 Subject
이다.
즉 다시 말하자면 PublishSubject
후에 .cache()
을 붙였다고 보면 된다.
//ReplaySubject 선언
io.reactivex.subjects.Subject<String> subject = ReplaySubject.create();
subject.subscribe( v -> System.out.println("Observer 1: " + v));
subject.onNext("Alpha");
subject.onNext("Beta");
subject.onNext("Gamma");
subject.onComplete();
subject.subscribe( v -> System.out.println("Observer 2: " + v));
subject.subscribe( v -> System.out.println("Observer 3: " + v));
...........
Observer 1: Alpha
Observer 1: Beta
Observer 1: Gamma
Observer 2: Alpha <-- 처음부터 캐싱된 걸 보여준다.
Observer 2: Beta
Observer 2: Gamma
Observer 3: Alpha <-- 3번째도 캐싱된걸 보여주고 있다.
Observer 3: Beta
Observer 3: Gamma