繁体   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