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>