0
が必要です。NodeJSカスタムクラスこの次のコードは動作しない理由を誰かが私に説明でき持つEventEmitterを拡張し、
私はEventManagerクラスを持っている:
const events = require('events')
class EventManager extends events.EventEmitter {
constructor() { super() }
}
const instance = new EventManager()
module.exports = instance
私はこれを必要とinit.jsファイルを持っていますEventManagerと、このようないくつかのイベントを登録します。私のprocessTask機能で
const EventManager = require('./EventManager')
const processTask = require('./processTask')
EventManager.on('startTask', (task) => {
processTask(task)
})
EventManager.on('endTask', (task) => {
//some code
})
const someTask = {}
EventManager.emit('startTask', someTask)
は、私はEventManagerを呼び出し、endTaskイベントを発する:
// processTask.js
const EventManager = require('../lib/EventManager')
module.exports = (task) => {
// some code
EventManager.emit('endTask')
}
endTaskは放出されませんが、なぜですか?
モジュールからローカルクラスの単一インスタンスをエクスポートしないでください。そして、なぜあなたはまったく継承していますか? – Bergi
'// some code'とは何ですか?例外はありますか? – Bergi
あなたのコードを実行し、processTaskファイル内のsetTimeout内にEventManager.emit( 'endTask')を置くことは私の仕事です。あなたがそこに持っている「いくつかのコード」のすべてをコメントアウトし、それが動作するかどうかを確認します。もしそうであれば、おそらく放出呼び出しに達していないでしょう。 – poeticGeek