2016-10-17 16 views
0

PublishSubjectは、観測者と観測可能な間のブリッジを持っているのは素晴らしいです:PublishSubject - onNext()を実行する方法はありますか?

Observable<String> observable = Observable.just("string"); 

    PublishSubject<String> observer1 = PublishSubject.<String>create(); 

    Observer<Object> observer2 = new Observer<Object>() {...} 

    // observer2 will receive all onNext and onCompleted events from observer1 
    observer1.subscribe(observer2); 

    //observer1 will get items from observable and propagate them to observer2 
    observable.subscribe(observer1); 

それは一種の橋であることから、何かのアパートを行うための機能が欠けているしかし、私はそれのことができるようにするために便利になるだろう意味

PublishSubject<String> observer1 = PublishSubject.<String>create() 
    .doOnNext(item -> System.out.println("Do something with the item " + item)); 

しかし、コンパイラはType mismatch: cannot convert from Observable<String> to PublishSubject<String>と苦情を言います。

PublishSubjectを装飾してnext()で何かを行う方法はありますか?

答えて

2

このような装飾は実際には実際には機能しません。元のPublishSubjectへの参照を保ち、Observableの返品をdoOnNextに渡してください。

PublishSubject<String> subject = PublishSubject.<String>create() 

Observable<String> source = subject 
    .doOnNext(item -> System.out.println("Do something with the item " + item)); 

source.subscribe(System.out::println, Throwable::printStackTrace); 

subject.onNext("1"); 
関連する問題