123456789101112131415161718192021222324252627282930313233343536373839404142 |
- class EventBus {
- constructor() {
- this.events = {};
- }
- /**
- * @param {any} type 事件名称
- * @param {any} handler 事件处理器 暂时支持一个事件只有一个处理器
- * @param {any} isKeep 是否保持常驻不被消费
- * @returns
- */
- on(type, handler, isKeep) {
- this.events[type] = handler;
- if (isKeep) this.events[type].isKeep = true;
- return this;
- }
-
- //取消订阅事件
- off(type) {
- if (!type) {
- return this;
- }
- delete this.events[type];
-
- return this;
- }
-
- //触发事件
- emit(type, data, callback) {
- const fn = this.events[type];
- if (fn) {
- fn.call(this, data, callback);
- if (!this.events[type].isKeep) {
- this.events[type] = null;
- }
- }
- return this;
- }
- }
-
- const eventBus = new EventBus();
-
- export default eventBus;
|