PublishSubject - 有没有办法执行 onNext()?
PublishSubject - is there a way to execute something onNext()?
PublishSubject 非常适合在观察者和可观察对象之间架起一座桥梁:
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() 上执行某些操作?
这样的装饰在实践中并没有真正起作用。只保留参考原文 PublishSubject
并分发 Observable
doOnNext
returns.
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");
PublishSubject 非常适合在观察者和可观察对象之间架起一座桥梁:
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() 上执行某些操作?
这样的装饰在实践中并没有真正起作用。只保留参考原文 PublishSubject
并分发 Observable
doOnNext
returns.
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");