开发者社区> 问答> 正文

EventEmitter 实现

EventEmitter 实现

展开
收起
请回答1024 2020-04-08 12:35:51 738 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载