rxjs - 从 Observable 复制到 Observer

标签 rxjs

我想将 Observable 的内容复制到 Observer 中。

有没有一种简洁的方法可以实现这一点,而无需诉诸 subscribe() 并手动将事件从 Observable 发送到 Observer?即

    var observer = new Subject();
    var observable = new Subject();

    observable.subscribe(i => observer.next(i), e => observer.error(e), () => observer.complete())

注意:以上代码示例使用 TypeScript。

最佳答案

我看不出这样做有什么意义。您打算将多个观察者合并为一个吗?有一个运算符:Observable.merge .

如果不能使用合并,最短的方法是使用 right version of subscribe :

var observer = new Subject();
var observable = new Subject();

observable.subscribe(observer);

编辑

假设您的初始化代码如下所示:

function initStream() {
  var subject = new Subject();
  loadConfigurationCallback(config => {
    const observable = createStreamBasedOnConfig(config);
    observable.subscribe(subject);
  });
  return subject;
}

在这种情况下,如果让 loadConfiguration 本身返回一个可观察对象,则可以进一步简化:

function initStream() {
  return loadConfigurationObservable().flatMap(createStreamBasedOnConfig);
}

关于rxjs - 从 Observable 复制到 Observer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38998117/

相关文章:

javascript - `reduce/scan` 的累加器函数中的可观察类型是否匹配?

javascript - 在没有 combineLatest 的情况下从另一个可观察对象获取值(value)的最佳方法

javascript - 具有 bool 值的 BehaviorSubject 未按预期工作

javascript - 如何使用 RxJS 运算符创建可观察的自定义对象流

rxjs - rx (rxjs) fromEvent operator 是多播的吗?

angular - 路由更改时组件之间的BehaviorSubject

javascript - 订阅数据到来后如何正确运行方法?

javascript - 以 Angular 每 x 秒一次的 http 请求

Angular - 终止 Observables 的首选方式是什么?

javascript - 使用combineLatest刷新列表: Angular2 + RxJS