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了。解决办法如下。
Mar 18, 2025
使用npm开发中会发现,比如将node_modules文件夹删除,然后重新安装依赖,会发现安装速度非常快,这是因为npm有缓存机制。
Feb 13, 2025
有时因为网络或安全问题,需要切换项目中的npm包源。一般做法是切换npmrc中源,但切换后进行安装包时,会发现install后,包还是会走老的源,尤其是lock文件已生成的情况。这里就分析下registry不work的问题。
Sep 17, 2024
本文是作者对node项目下的安全组件扫描处理的介绍,包括node项目下的安全组件扫描处理的优势、实现细节、相关资料等,这些步骤可以帮助作者提高node项目下的安全组件扫描处理的效率。
Jun 2, 2024
本文介绍关于流写入文件时造成的文件内容被清空问题,包括使用场景、实现细节等,以提高关于流写入文件时造成的文件内容被清空问题的效率。
Apr 27, 2024
本文是作者对nodejs项目中下加载esmdule的介绍,包括nodejs项目中下加载esmdule的优势、实现细节、相关资料等,这些步骤可以帮助作者提高nodejs项目中下加载esmdule的效率。
Apr 10, 2024
本文是作者对ssh2包介绍的介绍,包括ssh2包介绍的优势、实现细节、相关资料等,这些步骤可以帮助作者提高ssh2包介绍的效率。
Jan 14, 2024
本文是作者对Cannot use import statement outside a module的介绍,包括Cannot use import statement outside a module的优势、实现细节、相关资料等,这些步骤可以帮助作者提高Cannot use import statement outside a module的效率。
Oct 29, 2022
本文是作者对Whistle插件开发-remote-rules的介绍,包括Whistle插件开发-remote-rules的优势、实现细节、相关资料等,这些步骤可以帮助作者提高Whistle插件开发-remote-rules的效率。
Apr 9, 2022
本文介绍了解process.env.NODE_ENV,包括使用场景、实现细节等,以提高了解process.env.NODE_ENV的效率。
Dec 5, 2021