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。
答案 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