@gdjiami/jslib
Version:
Jiami FrontEnd helpers and Services
70 lines (60 loc) • 1.57 kB
JavaScript
/**
* 简单事件订阅模式
*/
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 = {};