簡體   English   中英

為什么`BehaviorSubject`不會發出最后一個值

[英]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)); 

請參閱演示: http//jsbin.com/limurip/3/edit?js,console

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM