UNPKG

@gdjiami/jslib

Version:

Jiami FrontEnd helpers and Services

55 lines (54 loc) 1.72 kB
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 };