2016-05-05 21 views
1

私はEventEmitterであり、種類がEventEmitterのクラスWorkflowParentで作業しています。NodeJS EventEmitterが起動しない

私はクラスが子プロパティからいくつかのイベントをインターセプトし、異なるイベント名でそれらを再発光したいと思います。

私はそれを正しくやっているようですが、動作していません。

var _ = require('lodash'); 
var EventEmitter = require('events').EventEmitter; 
var awsswf = require('aws-swf'); 
var swf = awsswf.createClient(); 
var util = require('util'); 

function WorkflowParent(){ 
    EventEmitter.call(this); 
    var me = this; 

    //Create decider object 
    me.decider = new awsswf.Decider({}); // <---- THIS IS AN EventEmitter 

    //Emit events from `decider` and `actor` objects 
    ['poll'].forEach(function(eventName){ 
     me.decider.on(eventName, function(event){ 
      console.log('decider event "'+eventName+'"', event); // <---- THIS IS EXECUTED 
      var attached = me.emit(eventName+'.decider', event); // emit "poll.decider" event 
      console.log('attached to poll.decider event?', attached); // <---- THIS IS `false` 
     }); 
    }); 

} 

util.inherits(WorkflowParent, EventEmitter); 

WorkflowParent.prototype.start = function(){ 
    this.on('poll.decider', function(event){ 
     console.log('poll.decider event triggered!'); // <---- THIS NEVER RUNS 
    }); 
    this.decider.start(); 
}; 


module.exports = new WorkflowParent(); 

答えて

1

それはあなたがEventEmitterから継承したクラスでdomainという名前のプロパティを使用できないことが判明:ここに私のコードです。私はme.domainme._domainに改名し、それは働いた。

は、ここでこのバグの詳細が見つかりました:バグで述べたようにhttps://github.com/nodejs/node-v0.x-archive/issues/3922

を、また 持つEventEmitterであるドメインプロパティと何がこの競合を持っているとしています。

関連する問題