3

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

原代码:

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 服务器响应一个字符串“数据”时,然后执行该功能。但我通读了 Twitter API (v1 - https://dev.twitter.com/docs/api/1 ) 并没有看到任何支持这种信念的东西。那么 res.on(...) 究竟是如何工作的呢?TIA 提供任何指导。

4

1 回答 1

2

res是一个 NodeJS 事件发射器,并res.on连接了一个事件的回调。您使用的对象res是一个 Nodehttp 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

于 2013-08-09T14:36:16.813 回答