RxJS - 从EventEmitter的多个事件创建Observable

时间:2018-02-05 11:31:21

标签: node.js rxjs observable eventemitter reactivex

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

我可以直接从它创建一个RxJS Observable吗?

即在next()上呼叫messageerror()呼叫error

1 个答案:

答案 0 :(得分:1)

您可以像这样创建:

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

作为替代方案,您可以通过构造和链接这样的可观察对象来实现这一点,但它显然不太可读:

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)),
);