X個の排出量をキャッシュできるが、指定された時間間隔(1分など)後にそれらを期限切れにすることができるcache()
演算子があるかどうか疑問に思いました。私は次のようなものを探していました...
_Observable<ImmutableList<MyType>> cachedList = otherObservable
.cache(1, 1, TimeUnit.MINUTES);
_
これにより、1つのアイテムがキャッシュされますが、1分後に期限切れになり、キャッシュがクリアされます。
私はいくつかの調査を行い、 リプレイ 演算子を見つけました。このニーズを満たすように見えましたが、いくつか質問があります。なぜ暑くて接続する必要があるのですか?これにより、cache()
演算子とは異なりますか? cache()
が主語を模倣していることは知っていますが、接続する必要はありません。
cache
とreplay
は、さまざまなユースケースを対象としています。キャッシュは自動接続のリプレイです。通常、長期間のリプレイに使用されるすべてのコンテナです。リプレイはより多くのパラメーター化を行うことができ、制限された時間/サイズのリプレイを実行できますが、開発者はいつ開始するかを指定する必要があります。 autoConnect()
演算子を使用すると、このようなConnectableObservable
インスタンスをプレーンなObservable
に変換できます。このインスタンスは、サブスクライバーがサブスクライブするとソースに接続します。このようにして、制限付きの自動接続再生を行うことができます(RxJava 1.0.14以降が必要です)。
source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...);