eventBus.js 963 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // event-bus.js(改进版)
  2. const eventBus = {
  3. events: {},
  4. cachedEvents: {}, // 缓存已触发的事件
  5. // 监听事件(支持获取历史缓存事件)
  6. on(event, callback, getCached = true) {
  7. if (!this.events[event]) {
  8. this.events[event] = [];
  9. }
  10. this.events[event].push(callback);
  11. console.log('======renwu ',this.events[event]);
  12. // 如果有缓存事件,立即执行回调
  13. if (getCached && this.cachedEvents[event]) {
  14. callback(this.cachedEvents[event]);
  15. }
  16. },
  17. // 触发事件(缓存最新数据)
  18. emit(event, data) {
  19. this.cachedEvents[event] = data;
  20. if (this.events[event]) {
  21. this.events[event].forEach(callback => callback(data));
  22. }
  23. },
  24. // 清除缓存事件
  25. clear(event) {
  26. if (event) {
  27. this.events[event] = []
  28. delete this.cachedEvents[event];
  29. } else {
  30. this.events = {}
  31. this.cachedEvents = {};
  32. }
  33. }
  34. };
  35. export default eventBus;