replay
RxScalaで理解しようとしています。次のようなオブザーバブルを作成します。
lazy val toyObservable : Observable[Int] = {
val coldObservable : Observable[Int] = intPerSecond
val hotObservable : ConnectableObservable[Int] = coldObservable.publish
val cachedObservable = hotObservable //.replay(3) //<<<<<<<<< ODD THING
cachedObservable.connect
cachedObservable
}
where はintPerSecond
、0 から始まる 1 秒あたり 1 つの整数を発射します。サブスクライブする最初のオブザーバーは、実際に 1 秒あたり 1 つの整数を認識します。2 番目のオブザーバーが t=6 秒で参加すると、その時点から、両者は一致するストリーム 6...7...8...9... を 1 秒間隔で見ます。それは予想通りです。
ここで追加すると.replay(3)
、2 番目のオブザーバーが参加すると、3456...7...8...9 が表示されると予想されます。つまり、彼はすぐにキャッシュから 3 つの整数を取得し、それらを受け取ります。 1 秒に 1 つずつ生成されます。しかし、代わりに、どちらのオブザーバーも今は何も見ていません。構文が間違っていますか?