UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

93 lines (86 loc) 2.54 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _classCallCheck = require('@babel/runtime/helpers/classCallCheck'); var _createClass = require('@babel/runtime/helpers/createClass'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck); var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass); /** * 事件总线类 * 实现发布-订阅模式,用于组件间通信 * @example * ```ts * const bus = new EventBus(); * * // 订阅事件 * bus.on('message', (data) => { * console.log('收到消息:', data); * }); * * // 发布事件 * bus.emit('message', 'Hello World'); * * // 取消订阅 * bus.off('message'); * ``` */ var EventBus = /*#__PURE__*/function () { function EventBus() { _classCallCheck__default["default"](this, EventBus); this.events = {}; } /** * 发布事件 * 触发指定事件的所有监听器 * @param eventName - 事件名称 * @param args - 传递给监听器的参数 */ return _createClass__default["default"](EventBus, [{ key: "emit", value: function emit(eventName) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } if (this.events[eventName]) { this.events[eventName].forEach(function (fn) { fn.apply(void 0, args); }); } } /** * 订阅事件 * 添加事件监听器 * @param eventName - 事件名称 * @param fn - 监听器函数 */ }, { key: "on", value: function on(eventName, fn) { this.events[eventName] = this.events[eventName] || []; this.events[eventName].push(fn); } /** * 取消订阅 * 移除指定事件的监听器 * @param eventName - 事件名称 * @param fn - 要移除的监听器函数,如果不传则移除该事件的所有监听器 */ }, { key: "off", value: function off(eventName, fn) { if (!fn) { delete this.events[eventName]; return; } if (this.events[eventName]) { for (var i = 0; i < this.events[eventName].length; i++) { if (this.events[eventName][i] === fn) { this.events[eventName].splice(i, 1); break; } } } } }]); }(); exports.EventBus = EventBus;