UNPKG

ascor

Version:

一些常用的简单的js工具

75 lines (74 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitter = void 0; var EventEmitter = /** @class */ (function () { function EventEmitter() { this.eventCallback = {}; } /** * 添加事件 * @param event 事件名称,字符串 * @param cb 事件回调函数 * @returns EventEmitter */ EventEmitter.prototype.on = function (event, cb) { var callbackList = this.eventCallback[event] || []; callbackList.push(cb); this.eventCallback[event] = callbackList; return this; }; /** * 取消监听事件 * @param event 事件名称 * @param cb 事件回调函数,不传则取消所有 * @returns */ EventEmitter.prototype.off = function (event, cb) { if (!cb) { this.eventCallback[event] = []; return this; } var callbackList = this.eventCallback[event] || []; this.eventCallback[event] = callbackList.filter(function (fn) { return fn !== cb; }); return this; }; /** * 发送事件 * @param event 事件名称,字符串 * @param args 触发时间传递的参数 * @returns */ EventEmitter.prototype.emit = function (event) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var callbackList = this.eventCallback[event] || []; callbackList.forEach(function (fn) { fn.apply(void 0, args); }); return this; }; /** * 仅触发一次事件,执行完后自动去掉监听 * @param event 事件名称 * @param cb 回调函数 * @returns */ EventEmitter.prototype.once = function (event, cb) { var _this = this; // 封装一个单次执行函数 var fn = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } cb.apply(_this, args); _this.off(event, fn); }; this.on(event, fn); return this; }; return EventEmitter; }()); exports.EventEmitter = EventEmitter;