event.js 741 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var events = {};
  2. /**
  3. * 订阅
  4. */
  5. function on(name,self,callback){
  6. var tuple = [self,callback]
  7. var callbacks = events[name]
  8. if(Array.isArray(callbacks)){
  9. callbacks.push(tuple)
  10. }
  11. else{
  12. events[name] = [tuple]
  13. }
  14. }
  15. /**
  16. * 取消订阅
  17. */
  18. function remove(name,self){
  19. var callbacks = events[name]
  20. if(Array.isArray(callbacks)){
  21. events[name] = callbacks.filter((tuple) => {
  22. return tuple[0] != self
  23. })
  24. }
  25. }
  26. /**
  27. * 发出
  28. */
  29. function emit(name,data){
  30. var callbacks = events[name]
  31. if(Array.isArray(callbacks)){
  32. callbacks.map((tuple) =>{
  33. var self = tuple[0]
  34. var callback = tuple[1]
  35. callback.call(self,data)
  36. })
  37. }
  38. }
  39. exports.on = on
  40. exports.remove = remove
  41. exports.emit = emit