Ich kann nicht herausfinden, wie publishReplay().refCount()
funktioniert.rxjs 5 publishReplay refCount
Zum Beispiel (https://jsfiddle.net/7o3a45L1/):
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();
ergibt folgendes Ergebnis:
Anruf Observera: 5
observerB: 5 Anruf observerB: 5
observerC: 5 observerC: 5 call observerC: 5
observerD: 5 observerD: 5 observerD: 5 Anruf observerD: 5
1) Warum observerB sind, C und D mehrmals aufgerufen?
2) Warum wird "call" auf jeder Zeile und nicht am Anfang der Zeile gedruckt?
Auch, wenn ich publishReplay(1).refCount()
aufrufen, ruft es observerB, C und D jeweils 2 mal.
Was ich erwarte ist, dass jeder neue Beobachter den Wert 5 genau einmal erhält und "Anruf" nur einmal gedruckt wird.
Die einzige in Verbindung stehende Antwort –