[英]RxJava 2: Why can't PublishProcessor subscribe to an Observable?
我想在RxJava中實現相當簡單的DAG。
我們有一個項目來源:
Observable<String> itemsObservable = Observable.fromIterable(items)
接下來,我想有一個處理器,該處理器將訂閱itemsObservable
並使多個訂閱者可以訂閱它。
所以我創建了:
PublishProcessor<String> itemsProccessor = PublishProcessor.create();
不幸的是,這是不可能的:
itemsObservable.subscribe(itemsProccessor);
為什么? 什么是實現這種DAG的合適API?
這是一個演示圖:
這是我(失敗的)嘗試實現這種DAG的嘗試:
List<String> items = Arrays.asList("a", "b", "c");
Flowable<String> source = Flowable.fromIterable(items);
PublishProcessor<String> processor = PublishProcessor.create();
processor.doOnNext(s -> s.toUpperCase());
processor.subscribe(System.out::println);
processor.subscribe(System.out::println);
source.subscribe(processor);
這是因為PublishProcessor
在Observable
的PublishProcessor
方法接受Observer
同時實現了Subscriber
。 您可以將轉換itemsObservable
到Flowable
,它會做的工作。
Observable<String> items = Observable.fromIterable(Arrays.asList("a","b"));
PublishProcessor<String> processor = PublishProcessor.create();
items.toFlowable(BackpressureStrategy.BUFFER)
.subscribe(processor);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.