2016-06-24 6 views
2

私は、ある観測者のインスタンスをいくつかの観測可能物に共有するのは間違っていると思います。観察者のonCompleted以来の例RxJavaの一部のオブザーバで1人のオブザーバを共有するケースはありますか?

Observable o1 = Observable.interval(1, TimeUnit.MILLISECOND); 
Observable o2 = Observable.interval(1, TimeUnit.MILLISECOND); 

Observer observer = new Observer() { ... } 

o1.subscribe(observer); 
o2.subscribe(observer); 

については は()いくつかの回と呼ばれることになる、それは受け入れられないかもしれません。

しかし、これに関するドキュメントは見つかりませんでした。 したがって、ある観測者をいくつかの観測対象に共有するケースがあったのだろうかと思います。

答えて

1

オブザーバは、オブザーバブルを購読した後に作成され、アイテムが放出されると、オブザーバは登録を解除して削除します。

Observablesを使用しないようにすることができます。リレーは、onCompleteコールバックを提供しないため、オブザーバーの購読を中止することはありません。

/** 
* ReplayRelay it works just like hot observables, once that an observer subscribe, the Relay will replay all items already emitted 
* to another observer. 
* it should return 1,2,3,4,5 for both observers. 
*/ 
@Test 
public void testReplaytRelaySharingObserver() { 
    ReplayRelay<String> relay = ReplayRelay.create(); 
    Subscription subscription = relay.subscribe(result -> System.out.println("Observer1:" + result)); 
    relay.call("1"); 
    relay.call("2"); 
    relay.call("3"); 
    relay.subscribe((Observer<? super String>) subscription); 
    relay.call("4"); 
    relay.call("5"); 
} 

あなたがここにhttps://github.com/politrons/reactive/blob/master/src/test/java/rx/relay/Relay.java

+0

を他の人に関連する例を見ることができますがあなたの情報のためにありがとうございました!今、私はこれについて確かめることができました。私はRxRelayをチェックします。それはとても面白いです! – otal

関連する問題