You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
707 B
35 lines
707 B
var events = {};
|
|
|
|
function on(name, self, callback) {
|
|
var tuple = [self, callback];
|
|
var callbacks = events[name];
|
|
if (Array.isArray(callbacks)) {
|
|
callbacks.push(tuple);
|
|
} else {
|
|
events[name] = [tuple];
|
|
}
|
|
}
|
|
|
|
function remove(name, self) {
|
|
var callbacks = events[name];
|
|
if (Array.isArray(callbacks)) {
|
|
events[name] = callbacks.filter((tuple) => {
|
|
return tuple[0] != self;
|
|
})
|
|
}
|
|
}
|
|
|
|
function emit(name, data) {
|
|
var callbacks = events[name];
|
|
if (Array.isArray(callbacks)) {
|
|
callbacks.map((tuple) => {
|
|
var self = tuple[0];
|
|
var callback = tuple[1];
|
|
callback.call(self, data);
|
|
})
|
|
}
|
|
}
|
|
|
|
exports.on = on;
|
|
exports.remove = remove;
|
|
exports.emit = emit;
|