2017-01-16 3 views
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は放出されませんが、なぜですか?

+0

モジュールからローカルクラスの単一インスタンスをエクスポートしないでください。そして、なぜあなたはまったく継承していますか? – Bergi

+1

'// some code'とは何ですか?例外はありますか? – Bergi

+1

あなたのコードを実行し、processTaskファイル内のsetTimeout内にEventManager.emit( 'endTask')を置くことは私の仕事です。あなたがそこに持っている「いくつかのコード」のすべてをコメントアウトし、それが動作するかどうかを確認します。もしそうであれば、おそらく放出呼び出しに達していないでしょう。 – poeticGeek

答えて

1

//コードに問題がありました。 thx @Bergiと@poeticGeekです。

関連する問題