簡體   English   中英

RxJava 2:為什么PublishProcessor不能訂閱Observable?

[英]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); 

這是因為PublishProcessorObservablePublishProcessor方法接受Observer同時實現了Subscriber 您可以將轉換itemsObservableFlowable ,它會做的工作。

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM