RxJS - 从 EventEmitter 的多个事件创建 Observable [英] RxJS - Create Observable from an EventEmitter's multiple events
本文介绍了RxJS - 从 EventEmitter 的多个事件创建 Observable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 node.js EventEmitter,它引发以下事件:error
、message
.
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()
调用 message
和 error()
调用 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屋!
查看全文