/**
 * @class Emitter 
 * @description 事件监听器
 */
class Emitter {
    /**
     * 构造函数
     */
    constructor() {
        /**
         * 事件
         */
        this.events = {};
    }

    /**
     * 监听事件
     * @param {*} name 事件名称
     * @param {*} callback 回调事件
     */
    on(name, callback) {
        if (!!this.events[name] === false) this.events[name] = [];
        this.events[name].push(callback);
    }

    /**
     * 触发事件
     * @param {*} name 事件名称
     * @param  {...any} args 参数
     */
    emit(name, ...args) {
        let handlers = this.events[name];
        if (!!handlers) handlers.forEach(handler => handler(...args));
    }

    /**
     * 移除事件
     * @param {*} name 事件名称
     * @param {*} callback 回调事件
     */
    remove(name, callback) {
        if (this.events[name]) this.events[name] = this.events[name].filter(handler => handler !== callback);
    }
}

文章作者: CaptainTwo
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CaptainTwo
NodeJs JavaScript NodeJs JavaScript
喜欢就支持一下吧