JSFiddle - React, Tailwind, and code Playground
HTML
<input type="button" value="next" onclick="javascript:myApp.next()"/>
<input type="button" value="reset" onclick="javascript:myApp.reset()"/>
JavaScript
window.myApp = {};
(function(context) {
var id = 0;
var callbacks = {};
context.next = function() {
id++;
doCallbacks('next', {id: id});
return id;
};
context.setCallback = function(event, f) {
if(!callbacks[event] || !callbacks[event] instanceof Array) {
callbacks[event] = [];
}
callbacks[event].push(f);
}
context.reset = function() {
id = 0;
doCallbacks('reset');
}
function doCallbacks(key, event) {
if(callbacks[key] && callbacks[key] instanceof Array) {
for(var i=0; i < callbacks[key].length; i++) {
callbacks[key][i](event);
}
}
}
})(myApp);
myApp.setCallback('next', function() {
alert('First callback on next');
});
myApp.setCallback('next', function(event) {
alert('second callback on next, id is ' + event.id);
});
myApp.setCallback('reset', function() {
alert('callback on reset');
});