UNPKG

@gdjiami/jslib

Version:

Jiami FrontEnd helpers and Services

70 lines (60 loc) 1.57 kB
/** * 简单事件订阅模式 */ export var EventEmitter = /*#__PURE__*/ function () { function EventEmitter() {} var _proto = EventEmitter.prototype; /** * 事件绑定 * @param name 事件名 * @param callback 执行回调 */ _proto.addEventListener = function addEventListener(name, callback) { var _this = this; if (EventEmitter.listeners[name]) { EventEmitter.listeners[name].push(callback); } else { EventEmitter.listeners[name] = [callback]; } return function () { return _this.removeEventListener(name, callback); }; } /** * 事件解绑 * @param name 事件名 * @param callback 执行回调 */ ; _proto.removeEventListener = function removeEventListener(name, callback) { if (EventEmitter.listeners[name]) { var idx = EventEmitter.listeners[name].findIndex(function (i) { return i === callback; }); if (idx !== -1) { EventEmitter.listeners[name].splice(idx, 1); } } } /** * 事件触发 * @param name 事件名 * @param args 执行回调时传入的参数 */ ; _proto.emit = function emit(name) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } var list = EventEmitter.listeners[name]; if (list) { list.forEach(function (callback) { return callback.apply(void 0, args); }); } }; return EventEmitter; }(); EventEmitter.listeners = {};