1. ホーム
  2. javascript

[解決済み] Node.js の http get リクエストからデータを取り出す方法

2023-02-02 09:24:59

質問

私は自分の関数がhttpの取得要求を返すようにしようとしていますが、私が何をするにしても、それは「スコープ」で失われるようです。私はNode.jsに非常に新しいので、どんな助けでも感謝されます。

function getData(){
  var http = require('http');
  var str = '';

  var options = {
        host: 'www.random.org',
        path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
  };

  callback = function(response) {

        response.on('data', function (chunk) {
              str += chunk;
        });

        response.on('end', function () {
              console.log(str);
        });

        //return str;
  }

  var req = http.request(options, callback).end();

  // These just return undefined and empty
  console.log(req.data);
  console.log(str);
}

どのように解決するのですか?

もちろん、ログは undefined : リクエストが完了する前にログを記録します。問題はスコープではなく 非同期性 .

http.request は非同期であるため、コールバックをパラメータとして受け取ります。コールバックの中でやるべきことをやってください。 response.end ):

callback = function(response) {

  response.on('data', function (chunk) {
    str += chunk;
  });

  response.on('end', function () {
    console.log(req.data);
    console.log(str);
    // your code here if you want to use the results !
  });
}

var req = http.request(options, callback).end();