[英]ES6 Classes Event Emitter
有人可以指出我一個體面的EventEmitter(ES6),以在不同類之間全局使用發射事件嗎? 最好有例子嗎? 我發現了很多,但是沒有找到類之間的有效示例。
我會喜歡一個可以用作Singleton的人,所以不必擴展它。
例如(非真實代碼):
import emitter from 'SingleTonEmitter';
export class Listener(){
const myEmitter = new Emitter()
myEmitter.on('somethingHappened', (data) => this.onChange())
}
// NEW sepatate class
import emitter from 'SingleTonEmitter';
export class DispatchClass(){
const myEmitter = new Emitter()
myEmitter.dispatch('somethingHappened','optionalData')
}
提前致謝!
RxJS主題可以充當通用事件發射器。 JS模塊自然會處理Singleton模式,因為它們僅被評估一次,因此並不特定於事件發射器類的實現。
這是在RxJS 6中完成的過程:
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: {...} });
RxJS Subject
用於Angular EventEmitter
實現 。
有幾門學科都有自己的特色,在某些情況下可能是首選。
如有必要,可以擴展Subject
類以為pipe(filter(...))
例程提供語法糖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.