我正在使用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