-
Notifications
You must be signed in to change notification settings - Fork 0
/
pubsub.js
37 lines (30 loc) · 917 Bytes
/
pubsub.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// This module serves as a mediator for all events
var pubsub = {
// An event subscribes
on: (eventName, func) => {
// If events is not defined, define it
if(!this.events)
this.events = {};
//Add the function to event's list
this.events[eventName] = this.events[eventName] || [];
this.events[eventName].push(func);
},
// An event unsubscribes
off: (eventName, func) => {
//If there is an event loop in its list and find the function and remove it
if(this.events[eventName])
for( var index in this.events[eventName] )
if(this.events[eventName][index] === func) {
this.events[eventName].splice(index, 1);
break;
}
},
// An event is published
emit: (eventName, data) => {
// If event is present loop through it and execute the functions on its list with the data.
if(this.events[eventName])
this.events[eventName].forEach( func => {
func(data);
});
}
}