0

replayRxScalaで理解しようとしています。次のようなオブザーバブルを作成します。

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 つずつ生成されます。しかし、代わりに、どちらのオブザーバーも今は何も見ていません。構文が間違っていますか?

4

1 に答える 1