node.js eventEmitter + http.request

Ich habe dieses Tutorial gemachtnode.js eventEmitterEs hat gut funktioniert. Ich habe eine Methode hinzugefügt, die http.request verwendet, um Daten abzurufen, die funktionieren und die Daten ausgeben.

das problem ist, dass der hörer das ereignis nicht mitbekommt!

kann jemand helfen?

Code:

<code>var events = require('events');
var util = require('util');
var http = require('http');

//http request options, it query the twitter api and get the public timeline, works!
var options = {
    hostname : 'api.twitter.com',
    port : 80,
    method : 'get',
    path : '/1/statuses/public_timeline.json?count=3&include_entities=true'
}

// The Thing That Emits Event
Eventer = function(){
  events.EventEmitter.call(this);

//tutorial examples
  this.kapow = function(){
    var data = "BATMAN"
    this.emit('blamo', data);
  }

//tutorial examples
  this.bam = function(){
     this.emit("boom");
  }

//my method
  this.GetTweetList = function(){
    var tweets = "";
        var req = http.request(options, function(response){
                    var body = "";
                    response.on('data',function(data){
                        body += data;
                    });
                    response.on('end', function(){
                        tweets = JSON.parse(body);
                        this.emit("tweets", tweets);
                        util.puts('!!!!!!!!!! got some data !!!!!!!!!! \n');
                    });
                });
        req.end();
    }
 };
util.inherits(Eventer, events.EventEmitter);

// The thing that listens to, and handles, those events
Listener = function(){

//tutorial examples
this.blamoHandler =  function(data){
    console.log("** blamo event handled");
    console.log(data);
  },

//tutorial examples
  this.boomHandler = function(data){
    console.log("** boom event handled");
  }

//my listener method
  this.GetTweetListHandler = function(data){
        console.log("** tweets event handled");
        util.put(data);
        util.puts('!!!!!!!!!! got some data in listener !!!!!!!!!! \n');

    }

};

// The thing that drives the two.
//instanciating the object and liking the methodes
var eventer = new Eventer();
var listener = new Listener(eventer);
eventer.on('blamo', listener.blamoHandler);
eventer.on('boom', listener.boomHandler);
eventer.on('tweets', listener.GetTweetListHandler);


//calling the methodes
eventer.kapow();//works
eventer.bam();//works
setInterval(eventer.GetTweetList, 2000);
//eventer.GetTweetList();// still waiting but the eventer display that he got the data
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage