这是我现在正在做的将Observable
转换为ReplaySubject
的事情:
const subject = new Rx.ReplaySubject(1);
observable.subscribe(e => subject.next(e));
这是进行转换的最佳方法,还是有一种更惯用的方法?
如果要传递所有三种类型的通知,则只能使用observable.subscribe(subject)
,因为主题已经表现得像观察者。例如:
let subject = new ReplaySubject();
subject.subscribe(
val => console.log(val),
undefined,
() => console.log('completed')
);
Observable
.interval(500)
.take(5)
.subscribe(subject);
setTimeout(() => {
subject.next('Hello');
}, 1000)
请观看现场演示:https://jsbin.com/bayewo/2/edit?js,console
然而,这有一个重要的后果。由于您已经订阅了Observable源,因此将其从“冷”更改为“热”(在您的用例中可能无关紧要)。