js写法
js
class EventEmitter {
constructor() {
this.listeners = {
'API:UN_AUTH': new Set(),
'API:INVALID': new Set()
}
}
on(event, listener) {
if (this.listeners[event]) {
this.listeners[event].add(listener)
} else {
console.warn(`Event ${event} is not supported.`)
}
}
emit(event, ...args) {
if (this.listeners[event]) {
this.listeners[event].forEach(listener => listener(...args))
}
}
off(event, listener) {
if (this.listeners[event]) {
this.listeners[event].delete(listener)
}
}
}
// 示例用法
const emitter = new EventEmitter()
const onAuth = () => console.log('Unauthorized access!')
emitter.on('API:UN_AUTH', onAuth)
emitter.emit('API:UN_AUTH') // 输出: Unauthorized access!
ts写法
字段声明:确保使用 private 或 public 关键字正确声明字段。
方法:添加了 on、emit 和 off 方法来管理事件。
类型注解:如果您使用 TypeScript,您可以添加类型注解。
ts
class EventEmitter {
// 使用 public 或 private 声明字段
private listeners: { [event: string]: Set<Function> } = {
'API:UN_AUTH': new Set(),
'API:INVALID': new Set()
}
// 添加事件监听器
public on(event: string, listener: Function) {
if (this.listeners[event]) {
this.listeners[event].add(listener)
} else {
console.warn(`Event ${event} is not supported.`)
}
}
// 触发事件
public emit(event: string, ...args: any[]) {
if (this.listeners[event]) {
this.listeners[event].forEach(listener => listener(...args))
}
}
// 移除事件监听器
public off(event: string, listener: Function) {
if (this.listeners[event]) {
this.listeners[event].delete(listener)
}
}
}
// 示例用法
const emitter = new EventEmitter()
const onAuth = () => console.log('Unauthorized access!')
emitter.on('API:UN_AUTH', onAuth)
emitter.emit('API:UN_AUTH') // 输出: Unauthorized access!