![]() |
1
1
所有事件发射器都只是一个javascript对象,它保留包含各种方法的侦听器的数据结构。发射器中的非活动侦听器不占用CPU,只占用与其正在侦听的回调引用和消息名(因此几乎没有RAM)相同的RAM。
您可以有尽可能多的发射器,以符合您的代码。它们既便宜又高效。你可以把它们想象成一个静态的听众数组。当你这样做的时候
EventEmitter是为处理许多不同的消息名称而构建的。所以,仅仅因为你有15条不同的消息,那就没有理由制造15个独特的事件发射器。您可以轻松地使用一个EventEmitter并调用
创建多个事件发射器的原因与代码的设计和体系结构有关。如果您有一个想要模块化和可重用的组件,并且它使用
不,不会的。每个EventEmitter只需要很小的内存就可以初始化其基本实例数据,但这太小了,以至于您可能无法测量1或这些实例与15个实例之间的差异。
如果你愿意的话,你可以自由地用这种方式设计你的代码,但是你要为自己做额外的工作,并且写的代码可能不够干净。EventEmitter的一大优点是,它们为每个单独的消息维护一组特定的侦听器。如果使用一条常规消息,然后将实际消息嵌入传递给
一般来说,使用
所以,在你展示的两个计划中,我非常喜欢第一个。就是这样
此外,您还将显示以下代码:
您是否认识到,不需要为了使用事件发射器而对其进行子类化。如果要在子类上添加或重写方法,则只能对其进行子类化。但这段代码没有显示实际的新方法或重写,因此没有必要这样做。 如果只想使用EventEmitter,只需创建一个:
|
![]() |
AlaaKudo810 · 无法更新猫鼬中的对象 1 年前 |
![]() |
Foobar · 如何在Fastify中为请求附加“项目”密钥? 1 年前 |
![]() |
chrispytoes · 从服务器端获取登录用户 1 年前 |