【问题标题】:RxJS - Create Observable from an EventEmitter's multiple eventsRxJS - 从 EventEmitter 的多个事件中创建 Observable
【发布时间】:2018-07-15 06:07:28
【问题描述】:

我有一个 node.js EventEmitter,它会引发以下事件:errormessage

有没有一种直接的方法可以从中创建一个 RxJS Observable?

next() 调用messageerror() 调用error

【问题讨论】:

  • EventEmitter 已经是一个 Observable。它继承自 Subject 继承自 Observable 类。
  • 我应该更清楚,它是一个常规的 node.js 事件发射器。更改了问题以反映这一点。
  • @user3690467 请注意,我现在必须编辑我的答案。如果错误事件是手动发送的,第一个选项实际上是错误的。

标签: node.js rxjs observable eventemitter reactivex


【解决方案1】:

你可以这样创建它:

const obs$ = Observable.create(observer => {
  emitter.on('message', val => observer.next(val));
  emitter.on('error', err => observer.error(err));
});

作为替代方案,您可以通过像这样构造和链接 observables 来做到这一点,但它显然不太可读:

const message$ = Observable.fromEvent(emitter, 'message');
const error$ = Observable.fromEvent(emitter, 'error');

const obs$ = Observable.merge(
  message$.catch(err => Observable.of(err)),
  error$.mergeMap(val => Observable.throw(val)),
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多