3

24 時間以内に Node.js を操作する Newb。この課題は、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。

4

1 に答える 1

2

resNodeJS イベント エミッターであり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 に答える