Nodejs和Twitter API 1 - res.on功能

时间:2013-08-09 14:27:58

标签: node.js twitter

Newb在24小时内通过Node.js工作。这个挑战来自关于JSON API的第15章。

原始代码:

var http = require('http')
    , data = ""
    , tweets = "";

var options = {
    protocol: 'http:'
    , host: 'search.twitter.com'
    , port: 80
    , path: '/search.json?q=%23node.js'
};

var request = http.get(options, function(res) {

    res.on('data', function(chunk){
        data += chunk;
    });
    res.on('end', function() {
        tweets = JSON.parse(data);
        console.log(tweets);
        for (var i= 0; i< tweets.results.length; i++) {
            console.log(tweets.results[i].text)
        }
    });
    res.on('errors', function(e){
        console.log("There was an error: " + e.message)
    });
});

我的问题涉及'res.on(...)'。我认为这意味着当Twitter服务器用字符串'data'响应时,然后执行该功能。但我通过Twitter API阅读(v1 - https://dev.twitter.com/docs/api/1)并没有看到任何支持这种信念的东西。那么res.on(...)究竟是如何工作的呢?任何指导的TIA。

1 个答案:

答案 0 :(得分:2)

res是NodeJS事件发射器,res.on挂起事件的回调。您正在使用的对象res是一个Node http response对象,它与Twitter提供的REST API无关。 Node客户端向http服务器(无论是Twitter还是Google或Stackoverflow)发出请求。当服务器响应时,res对象将发出相应的事件。

你可以尝试

, host: 'stackoverflow.com',
, port: 80,
, path: '/questions/18149079/nodejs-and-twitter-api-1-res-on-function'

res.on('end', function() {console.log(data)});

并查看生成的html数据:P