[英]Why `BehaviorSubject` doesn't emit the last value
關於BehaviorSubject的文檔聲明它應該返回最后發出的值,無論我何時訂閱但是它不會為我返回:
const ofObservable = Rx.Observable.of(1, 2, 3);
const subject = new Rx.BehaviorSubject();
ofObservable.subscribe(subject);
subject.subscribe((v) => {
console.log(v);
}, null, () => {
console.log('completed');
});
代碼日志僅completed
。
ReplaySubject
按預期工作,上面的代碼和日志1, 2, 3, completed
。
問題出在其他地方。
當您使用ofObservable.subscribe(subject)
,源Observable還會發出complete
通知,該通知將Subject
標記為已停止,並且它永遠不會發出任何內容。
因此,在這個用例中的解決方案只能傳遞next
信號:
ofObservable.subscribe(val => subject.next(val));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.