我有一个node.js EventEmitter会引发以下事件:error
,message
。
我可以直接从它创建一个RxJS Observable吗?
即在next()
上呼叫message
,error()
呼叫error
。
答案 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)),
);