RxJS - 从 EventEmitter 的多个事件创建 Observable [英] RxJS - Create Observable from an EventEmitter's multiple events

查看:71
本文介绍了RxJS - 从 EventEmitter 的多个事件创建 Observable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a node.js EventEmitter which raises the following events: error, message.

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

Is there a straight forward way I can create an RxJS Observable from it?

i.e next() 调用 messageerror() 调用 error.

i.e next() called on message and error() called on error.

推荐答案

你可以这样创建:

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

<小时>

作为替代方案,您可以通过像这样构造和链接 observables 来实现此目的,但显然可读性较差:


As an alternative, you can do this by constructinng and chaining observables like this, but it's clearly less readable:

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

这篇关于RxJS - 从 EventEmitter 的多个事件创建 Observable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆