PubSub / EventBus / Mediator JavaScript Pattern
function EventBus (){
this.events = []
}
EventBus.prototype.trigger = function(name, data) {
this.events.map(item => item.name == name && item.callback(data))
return this
}
EventBus.prototype.on = function(name, callback) {
this.events.push({name: name, callback: callback})
return this
}
EventBus.prototype.off = function(name) {
this.events = this.events.filter(item => item.name !== name)
return this
}
//Usage Example
const events = new EventBus()
events
.on("myEvent", function(data){
console.log(data.peanuts, data.oranges)
})
.on("anotherEvent", function(data){
console.log(data.jelly, data.butter)
})
events
.trigger("myEvent",{peanuts: "peanuts", oranges: "oranges"})
.off("myEvent")
.trigger("anotherEvent", {jelly: "jelly", butter: "buttsss"})
.off("anotherEvent")