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
。
答案 0 :(得分:3)
问题出在其他地方。
当您使用ofObservable.subscribe(subject)
时,源Observable也会发出complete
通知,该通知会将Subject
标记为停止,并且永远不会发出任何内容。
因此,此用例中的解决方案只能传递next
信号:
ofObservable.subscribe(val => subject.next(val));