mirror of
https://github.com/meshcore-dev/meshcore.js.git
synced 2026-04-20 22:13:49 +00:00
setup events
This commit is contained in:
parent
6f2d4ce1f7
commit
feb149ad35
5 changed files with 65 additions and 15 deletions
42
src/events.js
Normal file
42
src/events.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
class EventEmitter {
|
||||
|
||||
constructor() {
|
||||
this.eventListenersMap = new Map();
|
||||
}
|
||||
|
||||
on(event, callback) {
|
||||
|
||||
// create list of listeners for event if it doesn't exist
|
||||
if(!this.eventListenersMap.has(event)){
|
||||
this.eventListenersMap.set(event, []);
|
||||
}
|
||||
|
||||
// add listener for event
|
||||
this.eventListenersMap.get(event).push(callback);
|
||||
|
||||
}
|
||||
|
||||
off(event, callback) {
|
||||
|
||||
// remove callback from listeners for this event
|
||||
if(this.eventListenersMap.has(event)){
|
||||
const callbacks = this.eventListenersMap.get(event).filter(cb => cb !== callback);
|
||||
this.eventListenersMap.set(event, callbacks);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
emit(event, ...data) {
|
||||
|
||||
// invoke each listener for this event
|
||||
if(this.eventListenersMap.has(event)){
|
||||
for(const eventListener of this.eventListenersMap.get(event)){
|
||||
setTimeout(() => eventListener(...data), 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default EventEmitter;
|
||||
Loading…
Add table
Add a link
Reference in a new issue