2016-05-05 9 views
1

Ich arbeite an einer Klasse, WorkflowParent, die sowohl eine EventEmitter und untergeordnete Eigenschaften des Typs EventEmitter ist.NodeJS EventEmitter nicht feuernd

Ich möchte, dass die Klasse einige Ereignisse von seinen untergeordneten Eigenschaften abfängt und sie mit verschiedenen Ereignisnamen erneut emittiert.

Es scheint wie ich es richtig mache, aber es funktioniert nicht. Hier ist mein Code:

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(); 

Antwort

1

Es stellt sich heraus, dass Sie nicht eine Eigenschaft namens domain in einer Klasse verwenden können, die von EventEmitter erbt. Ich habe me.domain in me._domain umbenannt und es funktionierte.

Gefunden Details dieses Fehlers hier: https://github.com/nodejs/node-v0.x-archive/issues/3922

Wie im Bug erwähnt, alles mit einer Domain-Eigenschaft, der auch ein EventEmitter ist wird diesen Konflikt haben.