EventEmitter初版 class EventEmitter{ constructor(){ this.events={} } on(type,listener){ if(!this.events[type]){ this.events[type]=[] } this.events[type].push(listener) } emit(type,...args){ this.events[type].forEach(listener=>{ listener.call(this,...args) }) } off(type,listener){ if(this.events[type]){ const index=this.events[type].indexOf(listener) if(index!==-1){ this.events[type].splice(index,1) } } } once(type,listener){ const onceListener=(...args)=>{ listener.call(this,...args) this.off(type,onceListener) } this.on(type,onceListener) } } 测试 const eventEmitter=new EventEmitter() const listener=(args)=>{ console.log(args); } eventEmitter.once('test',listener) eventEmitter.off('test',listener) eventEmitter.emit('test',{a:1}) 执行上述代码,会发现test事件被触发了一次,预期应该是不执行的,因为off了。解决办法如下。
3月 18, 2025
click-to-component 是一个react组件,接入后可以实现一键跳转到源码,很大程度提升了开发效率。这里我尝试阅读源码,并记录一些关键点。
12月 31, 2024
本文介绍如何在xterm.js中使用attachCustomKeyEventHandler监听按键执行特殊处理,包括源码解读、使用场景等实现细节,以提高xterm.js终端的链接交互体验。
4月 13, 2024
本文是作者对ssh2-HTTPAgent源码阅读的介绍,包括ssh2-HTTPAgent源码阅读的优势、实现细节、相关资料等,这些步骤可以帮助作者提高ssh2-HTTPAgent源码阅读的效率。
4月 19, 2023
本文介绍关于美团网首页HTML源码阅读,包括使用场景、实现细节等,以提高关于美团网首页HTML源码阅读的效率。
10月 10, 2020
本文是作者对Antd使用中的需注意的细节的介绍,包括Antd使用中的需注意的细节的优势、实现细节、相关资料等,这些步骤可以帮助作者提高Antd使用中的需注意的细节的效率。
2月 20, 2020
本文是作者对TypeScript中的interface vs Type的介绍,包括TypeScript中的interface vs Type的优势、实现细节、相关资料等,这些步骤可以帮助作者提高TypeScript中的interface vs Type的效率。
10月 15, 2019
本文是作者对Redux-Thunk源码阅读的介绍,包括Redux-Thunk源码阅读的优势、实现细节、相关资料等,这些步骤可以帮助作者提高Redux-Thunk源码阅读的效率。
10月 5, 2019
本文是作者对JSX.Element vs React.ReactNode的介绍,包括JSX.Element vs React.ReactNode的优势、实现细节、相关资料等,这些步骤可以帮助作者提高JSX.Element vs React.ReactNode的效率。
9月 28, 2019