RxJava기록 - Subject클래스 (2)

dada·2022년 1월 4일
0

RxJava

목록 보기
7/12

PublishSubject 클래스

  • 가장 평범한 Subject 클래스로 오직 해당 시간에 발생한 데이터를 그대로 구독자에게 전달받음.

//PublishSubject 클래스 활용
PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(data -> System.out.println("Subscribe #1 => " + data));
subject.onNext("1");
subject.onNext("3");
subject.subscribe(data -> System.out.println("Subscribe #2 => " + data));
subject.onNext("5");
subject.onComplete();

//결과값
Subscriber #1 => 1
Subscriber #1 => 3
Subscriber #1 => 5
Subscriber #2 => 6

ReplaySubject 클래스

  • 구독자가 새로 생기면 항상 데이터의 처음부터 끝까지 발행하는 것을 보장

   ReplaySubject<String> subject= ReplaySubject.create();
   subject.subscribe(data->System.out.println("Subscriber #1 =>"+data ));
   subject.onNext("1");
   subject.onNext("3");
   subject.subscribe(data->System.out.println("Subscriber #2 =>"+data ));
   subject.onNext("5");
   subject.onComplete();
   
   //결과값
   Subscriber #1 => 1
   Subscriber #1 => 3
   Subscriber #2 => 1
   Subscriber #2 => 3
   Subscriber #1 => 5
   Subscriber #2 => 5

👉🏻첫 번째 구독자는 Observable을 구독한 이후에 발행한 ‘1’과 ‘3’을 전달받고, 두 번째 구독자는 subscribe() 함수를 호출하면 지금까지 발행된 ‘1’과 ‘3’을 바로 전달 받는다.

마지막으로 Subject 클래스가 ‘5’를 발행하면 두 구독자 모두 해당 값을 전달 받는다.

profile
기록하기

0개의 댓글