documentation on 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));
关于javascript - 为什么 `BehaviorSubject` 没有发出最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45054985/