Tôi không thể tìm ra cách hoạt động của publishReplay().refCount()
.rxjs 5 publishReplay refCount
Ví dụ (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();
cho kết quả sau:
gọi observerA: 5
observerB: 5 cuộc gọi observerB: 5
observerC: 5 người quan sátC: 5 người quan sát cuộc gọiC: 5
observerD: 5 observerD: 5 observerD: 5 cuộc gọi observerD: 5
1) Tại sao observerB, C và D gọi là nhiều lần?
2) Tại sao "cuộc gọi" được in trên mỗi dòng chứ không phải ở đầu dòng?
Ngoài ra, nếu tôi gọi publishReplay(1).refCount()
, nó gọi người quan sátB, C và D 2 lần mỗi.
Điều tôi mong đợi là mọi người quan sát mới nhận giá trị 5 chính xác một lần và "cuộc gọi" chỉ được in một lần.
Câu trả lời duy nhất có liên quan –