RXJAVA之Subject

  RxJava中常見的Subject有4種,分別是 AsyncSubject、 BehaviorSubject、PublishSubject、 ReplaySubject。ide

AsyncSubjectspa

  使用AsyncSubject不管輸入多少參數,永遠只輸出最後一個參數。code

BehaviorSubjectblog

  BehaviorSubject會發送離訂閱最近的上一個值,沒有上一個值的時候會發送默認值。io

BehaviorSubject<Integer> subject = BehaviorSubject.create();
        subject.onNext(1);
        subject.onNext(2);
        subject.onNext(3);
        subject.onNext(4);
        subject.subscribe(new Consumer<Integer>(){
            @Override
            public void accept(Integer t) throws Exception {
                System.out.println(t);
                
            }});

PublishSubjectclass

  使用PublishSubject從那裏訂閱就從那裏開始發送數據。數據

PublishSubject<Integer> subject = PublishSubject.create();
        subject.onNext(1);
        subject.subscribe(new Consumer<Integer>(){
            @Override
            public void accept(Integer t) throws Exception {
                System.out.println(t);
                
            }});
        subject.onNext(2);
        subject.onNext(3);
        subject.onNext(4);

  輸出結果2 3 4.di

ReplaySubjectvi

  不管什麼時候訂閱,都會將全部歷史訂閱內容所有發出。co

ReplaySubject<Integer> subject = ReplaySubject.create();
        subject.onNext(1);
        subject.subscribe(new Consumer<Integer>(){
            @Override
            public void accept(Integer t) throws Exception {
                System.out.println(t);
                
            }});
        subject.onNext(2);
        subject.onNext(3);
        subject.onNext(4);

  輸出結果1 2 3 4.

相關文章
相關標籤/搜索