Create Custom Event Emitter with javascript
class EventEmitter {
constructor() {
this._events = {};
}
on(name, listener) {
if (!this._events[name]) {
this._events[name] = [];
}
this._events[name].push(listener);
}
delete(name) {
if (this._events[name]) {
delete this._events[name];
}
}
removeListener(name, listenerToRemove) {
if (!this._events[name]) {
throw new Error(
`Can't remove a listener. Event "${name}" doesn't exits.`
);
}
const filterListeners = listener => listener !== listenerToRemove;
this._events[name] = this._events[name].filter(filterListeners);
}
emit(name, ...data) {
if (!this._events[name]) {
throw new Error(`Can't emit an event. Event "${name}" doesn't exits.`);
}
this._events[name].forEach(callback => callback(data));
}
}
let ev = new EventEmitter();
ev.on("hello", val => {
console.log("event from emiiter ", val);
});
const handleMyEvent = data => {
console.log("Was fired: ", data);
};
ev.emit("hello", { name: "shri" }, handleMyEvent);
// ev.delete("hello");
ev.emit("hello", { name: "shri" }, handleMyEvent);
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up