如何将可观察对象转换为ReplaySubject?

问题描述 投票:13回答:1

这是我现在正在做的将Observable转换为ReplaySubject的事情:

const subject = new Rx.ReplaySubject(1);

observable.subscribe(e => subject.next(e));

这是进行转换的最佳方法,还是有一种更惯用的方法?

rxjs rxjs5
1个回答
17
投票

如果要传递所有三种类型的通知,则只能使用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源,因此将其从“冷”更改为“热”(在您的用例中可能无关紧要)。

© www.soinside.com 2019 - 2024. All rights reserved.