我正在使用EventEmitter3这是我的javascript代码中的事件模块。它的工作方式与Node.js中的event
模块相同。但是我正面临着正确使用它的问题。我可以使用this.on来收听EventEmitter中的事件吗?在JavaScript中寻找正确使用Eventmitter的类
通常情况下,如果我在我的代码中使用该模块,我会创建一个EventEmitter
的对象,然后使用object.emit
来触发事件,并使用object.on
来侦听事件。而我通常所做的就是将object.on
放在另一个班级,这样它就可以很好地工作。
现在我尝试在ES6类中组织我的代码。所以我在我的自定义类中扩展了EventEmitter。假设它被称为类别A,它是EventEmitter的子类别。如果我听自己的事件类定义,像这样:
import EventEmitter from 'eventemitter3';
class ClassA extends EventEmitter {
constructor() {
...
}
method() {
this.emit('send');
}
this.on('send', function(data) {
// Do something with data
});
}
我就this.on
线得到一个意外标记错误。但我不确定如何在班级内听课,或者这是可行的?我必须将听众放在类定义之外吗?
为什么不注入事件发射器而不是继承它?通常构图比继承更灵活,更清洁。 – Yoda
@Yoda你的意思是创建一个专用的事件发射器类,并在此'ClassA'中使用它?假设我有很多'ClassA'的对象,并且我希望对象只听自己的事件,如果我使用专用事件发射器,监听器是否会监听来自其他对象的事件? – newguy