gpt4 book ai didi

javascript - Node : When subclassing an existing subclass of EventEmitter, 我如何拦截来自父类(super class)的事件?

转载 作者:行者123 更新时间:2023-11-30 20:26:12 29 4
gpt4 key购买 nike

我正在尝试编写 Node 库的扩展。该库导出一个扩展 EventEmitter 的类(class LibClass extends EventEmitter)。它负责建立一个 websocket 连接,当连接建立时,该类的实例会触发一个“就绪”事件(不带参数)。

我想继承这个现有的类(class MyClass extends LibClass),当父类(super class)发出“就绪”事件时,我想保持它直到我的类执行额外的设置,然后重新发出它。从功能上讲,我希望 LibClass 的所有方法都在 MyClass 上,但我想像这样覆盖某些事件的行为。

我将如何着手做这样的事情?是否可以通过子类化来完成,还是我必须在某处保留对 LibClass 实例的引用,并在我自己的类中重复所有相关方法和事件以将它们重定向到该实例?

最佳答案

正如 Bergi 在评论中所说,解决方案是覆盖 emit 事件,如下所示:

class MyClass extends LibClass {
constructor() {
super();
// ...
}

emit(name, ...args) {
if (name === 'someEvent') {
// Do custom setup for this event
}
// Other events will pass through unmodified
// When setup is completed, or if the event shouldn't be intercepted:
super.emit(name, ...args);
}
}

关于javascript - Node : When subclassing an existing subclass of EventEmitter, 我如何拦截来自父类(super class)的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897797/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com