2017-08-17 10 views
0

私はshare()がpublish()。refCount()の代わりであることを知っています。 はその後RxJavaのwikiから:共有オペレータはRxJavaで何をしますか?それはいつ使うべきですか?

Observable.publish() - 接続可能な観察可能 ConnectableObservable.refCount()として観測可能表し - 普通の観察可能

このメイクのように接続可能な観察可能な振る舞いをします私は混乱しています。 publish()。refCount()の後、普通のObservableのように振る舞いますが、なぜ私はそれを使うべきですか?このAPIはどうやって意味がありますか?

答えて

0

あなたはそうです - Observable.sharepublish().refCount()のショートカットです。私はあなたが上に引用している説明はもう少しいConnectedObservable.refCountとして完全には明らかではないと思われる:)

あなたObservableConnectableObservableに変換した場合 - 明示的ConnectableObservable.connect呼ばれない限り、それは(何かが加入されている場合でも)のアイテムを放出しません - 基本的にsubscribeメソッドの実行を延期し、すべてのサブスクライバに対して複数回実行することを防ぎます。このテクニックは、オブザーバブルがアイテムを発信し始める前に(つまり、誰もが購読した後にconnect()メソッドが呼び出される前に)すべてのユーザが購読されていることを確認するためによく使用されます。

複数のユーザがいる場合(頻繁に起こることがあります)、自分の購読と購読解除を処理する必要があり、状況が面倒なものになります。このため、refCount()が導入されました。この演算子は新しいObservableを返し、登録されているサブスクライバの数を追跡し、少なくとも1つのサブスクリプションが存在する限り接続を維持します。最初のサブスクライバが表示されたときにも自動的に接続されます。

PS。私が間違っている場合、RxJavaの使い方を学んでいます - それを指摘してください!

+0

説明していただきありがとうございます。私はpublishとrefCountの意味を知っていましたが、なぜそれらを一緒に使用するのか理解できませんでした。 –

+0

@WooguxWu 'publish'なしで' refCount'の動作を実現する他の方法がないので、これらは一緒に使用されます。 'publish()。refCount()'の後に得られるのは普通のObservableか、少なくともこれらの演算子を適用する前のObservableと同じではないということです。その動作はこれらの演算子の影響を受けます。 –

+0

ええ、私はそれが異なっていなければならないことを知っています、私はちょうど異なっていることを知りたいです。 refCount()と似ていますか?しかし、共有する前に接続できない場合、refCountはどのように影響を与えますか? –

関連する問題