[英]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.