开发者社区 问答 正文

EventEmitter 实现

EventEmitter 实现

展开
收起
请回答1024 2020-04-08 12:35:51 750 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • class EventEmitter { constructor() { this.events = {}; }

    on(event, callback) { let callbacks = this.events[event] || []; callbacks.push(callback); this.events[event] = callbacks;

    return this;
    

    }

    off(event, callback) { let callbacks = this.events[event]; this.events[event] = callbacks && callbacks.filter(fn => fn !== callback);

    return this;
    

    }

    emit(event, ...args) { let callbacks = this.events[event]; callbacks.forEach(fn => { fn(...args); });

    return this;
    

    }

    once(event, callback) { let wrapFun = function(...args) { callback(...args);

      this.off(event, wrapFun);
    };
    this.on(event, wrapFun);
    
    return this;
    

    } }

    2020-04-08 12:35:57 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答地址: