Javascript ES6类事件发射器

Javascript ES6类事件发射器,javascript,events,ecmascript-6,Javascript,Events,Ecmascript 6,有人能告诉我一个合适的EventEmitter(ES6)在不同的类中全局使用emit事件吗?最好举个例子?我找到了不少,但没有一个在课间有工作示例 我想要一个单身的,这样我就不必扩展它了 例如(非真实代码): 提前谢谢 RxJS主题可以充当通用事件发射器。单例模式自然由JS模块处理,因为它们只被评估一次,因此不特定于事件发射器类实现 RxJS 6中就是这样做的: import { Subject } from 'rxjs'; import { filter } from 'rxjs/operat

有人能告诉我一个合适的EventEmitter(ES6)在不同的类中全局使用emit事件吗?最好举个例子?我找到了不少,但没有一个在课间有工作示例

我想要一个单身的,这样我就不必扩展它了

例如(非真实代码):


提前谢谢

RxJS主题可以充当通用事件发射器。单例模式自然由JS模块处理,因为它们只被评估一次,因此不特定于事件发射器类实现

RxJS 6中就是这样做的:

import { Subject } from 'rxjs';
import { filter } from 'rxjs/operators';

export const filterEvent = event => filter(e => e.event === event);

export default new Subject();

RxJS
Subject
在中使用

有几个学科类别有其独特的特点,在某些情况下可能是首选


Subject
类可以扩展为
pipe(filter(…)
例程提供语法糖,如果需要的话。

类似的东西?确实找到了,但您仍然需要扩展它。我会试一试的,谢谢!我也找到了这个,;大致相同的用法为什么它作为一个单件工作会如此重要?您可以自己做这件事:
export const myEmitter=new StandardEventEmitter()
。实际上,任何事件发射器库都可以做到这一点。
import { Subject } from 'rxjs';
import { filter } from 'rxjs/operators';

export const filterEvent = event => filter(e => e.event === event);

export default new Subject();
import emitter, { filterEvent } from './emitter';

emitter
.pipe(filterEvent('foo'))
// or
// .pipe(filter(({ event }) => event === 'foo')))
.subscribe(e => {
  console.log(e.data)
});

emitter.next({ event: 'foo', data: {...} });