Skip to content

Instantly share code, notes, and snippets.

@satishbabariya
Created March 27, 2020 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save satishbabariya/4bf9a757f07b74813dd6dd8d832d6736 to your computer and use it in GitHub Desktop.
Save satishbabariya/4bf9a757f07b74813dd6dd8d832d6736 to your computer and use it in GitHub Desktop.
Events
export class Events {
static _Listeners = {
count: 0,
refs: {}
};
static addEventListener(eventName: string, callback: () => any) {
Events._Listeners.count++;
const eventId = "l" + Events._Listeners.count;
Events._Listeners.refs[eventId] = {
name: eventName,
callback
};
return eventId;
}
static removeEventListener(id) {
return delete Events._Listeners.refs[id];
}
static removeAllListeners() {
let removeError = false;
Object.keys(Events._Listeners.refs).forEach(_id => {
const removed = delete Events._Listeners.refs[_id];
removeError = !removeError ? !removed : removeError;
});
return !removeError;
}
static emit(eventName: string, data: any) {
Object.keys(Events._Listeners.refs).forEach(_id => {
if (
Events._Listeners.refs[_id] &&
eventName === Events._Listeners.refs[_id].name
)
Events._Listeners.refs[_id].callback(data);
});
}
}
@satishbabariya
Copy link
Author

// Sending Events
Events.emit('eventName', { hello: world })
Events.emit('eventName', true)
Events.emit('eventName', 1234)

// Handling Events
Events.addEventListener('evnetName', (e) => { console.log(e) })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment