Skip to main content

2694. Event Emitter

https://leetcode.com/problems/event-emitter/

Javascript

class EventEmitter {
subscribed = {}

subscribe(event, cb) {
if (!this.subscribed.hasOwnProperty(event)) {
this.subscribed[event] = []
}
this.subscribed[event].push(cb)

return {
unsubscribe: () => {
if (this.subscribed[event] && this.subscribed[event].length > 1) {
this.subscribed[event].pop()
} else {
delete this.subscribed[event]
}
}
};
}

emit(event, args = []) {
if (this.subscribed.hasOwnProperty(event)) {
return this.subscribed[event].map(callback => callback(...args))
}
return []
}
}