12345678910111213141516171819202122232425262728293031323334353637 |
- // event-bus.js(改进版)
- const eventBus = {
- events: {},
- cachedEvents: {}, // 缓存已触发的事件
-
- // 监听事件(支持获取历史缓存事件)
- on(event, callback, getCached = true) {
- if (!this.events[event]) {
- this.events[event] = [];
- }
- this.events[event].push(callback);
-
- // 如果有缓存事件,立即执行回调
- if (getCached && this.cachedEvents[event]) {
- callback(this.cachedEvents[event]);
- }
- },
-
- // 触发事件(缓存最新数据)
- emit(event, data) {
- this.cachedEvents[event] = data;
- if (this.events[event]) {
- this.events[event].forEach(callback => callback(data));
- }
- },
-
- // 清除缓存事件
- clear(event) {
- if (event) {
- delete this.cachedEvents[event];
- } else {
- this.cachedEvents = {};
- }
- }
- };
- export default eventBus;
|