publishReplay().refCount()
の仕組みを理解できません。例えばrxjs 5 publishReplay refCount
(https://jsfiddle.net/7o3a45L1/):
コールobserverA:5
observerB:5コールobserverB:5
observerC:5
var source = Rx.Observable.create(observer => { console.log("call"); // expensive http request observer.next(5); }).publishReplay().refCount(); subscription1 = source.subscribe({next: (v) => console.log('observerA: ' + v)}); subscription1.unsubscribe(); console.log(""); subscription2 = source.subscribe({next: (v) => console.log('observerB: ' + v)}); subscription2.unsubscribe(); console.log(""); subscription3 = source.subscribe({next: (v) => console.log('observerC: ' + v)}); subscription3.unsubscribe(); console.log(""); subscription4 = source.subscribe({next: (v) => console.log('observerD: ' + v)}); subscription4.unsubscribe();
は、以下の結果を与えobserverC:5 call observerC:5
observerD:5 observerD:5 observerD:5コールobserverD:5
1)observerB、C及びDが複数回呼び出されているのはなぜ?
2)「通話」が各行に印刷され、行の先頭に印刷されないのはなぜですか?
さらに、私がpublishReplay(1).refCount()
を呼び出すとobserverB、CおよびDがそれぞれ2回呼び出されます。
私が期待しているのは、新しい観察者はすべて値5を正確に1回受け取り、「呼び出し」は1回だけ表示されるということです。
唯一の関連する回答 –