RxJS - 从 EventEmitter 的多个事件创建 Observable
RxJS - Create Observable from an EventEmitter's multiple events
我有一个 node.js EventEmitter,它会引发以下事件:error
、message
。
有没有直接的方法可以从中创建 RxJS Observable?
即 next()
拜访了 message
,error()
拜访了 error
。
您可以这样创建它:
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)),
);
我有一个 node.js EventEmitter,它会引发以下事件:error
、message
。
有没有直接的方法可以从中创建 RxJS Observable?
即 next()
拜访了 message
,error()
拜访了 error
。
您可以这样创建它:
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)),
);