@gdjiami/jslib
Version:
Jiami FrontEnd helpers and Services
55 lines (54 loc) • 1.72 kB
JavaScript
import * as tslib_1 from "tslib";
/**
* 简单事件订阅模式
*/
var EventEmitter = /** @class */ (function () {
function EventEmitter() {
}
/**
* 事件绑定
* @param name 事件名
* @param callback 执行回调
*/
EventEmitter.prototype.addEventListener = function (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 执行回调
*/
EventEmitter.prototype.removeEventListener = function (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 执行回调时传入的参数
*/
EventEmitter.prototype.emit = function (name) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var list = EventEmitter.listeners[name];
if (list) {
list.forEach(function (callback) { return callback.apply(void 0, tslib_1.__spread(args)); });
}
};
EventEmitter.listeners = {};
return EventEmitter;
}());
export { EventEmitter };