event.js 825 B

12345678910111213141516171819202122232425262728293031323334353637
  1. var events = {};
  2. function on(name, self, callback) {
  3. var tuple = [self, callback];
  4. var callbacks = events[name];
  5. if (Array.isArray(callbacks)) {
  6. callbacks.push(tuple);
  7. }
  8. else {
  9. events[name] = [tuple];
  10. }
  11. }
  12. function remove(name, self) {
  13. var callbacks = events[name];
  14. if (Array.isArray(callbacks)) {
  15. events[name] = callbacks.filter((tuple) => {
  16. return tuple[0] != self;
  17. })
  18. }
  19. }
  20. function emit(name, data) {
  21. var callbacks = events[name];
  22. if (Array.isArray(callbacks)) {
  23. console.log(callbacks,'callbacks');
  24. callbacks.map((tuple) => {
  25. var self = tuple[0];
  26. var callback = tuple[1];
  27. callback.call(self, data);
  28. })
  29. }
  30. }
  31. exports.on = on;
  32. exports.remove = remove;
  33. exports.emit = emit;