Javascript 如何从NodeJS中的回调函数中获取数据?

Javascript 如何从NodeJS中的回调函数中获取数据?,javascript,node.js,Javascript,Node.js,我在从http获取数据时遇到问题。节点js的请求我在控制台中获取了数据,但当我试图从函数中获取数据时,它没有进入变量。这是我尝试发送请求时的代码,即端口转发。我在x回调函数中得到响应,但未找到数据,因此任何知道的人请告诉我 var fs = require('fs'); var http = require('http'); var url = require('url') , httpProxy = require('http-proxy'); var express = require("e

我在从http获取数据时遇到问题。节点js的请求我在控制台中获取了数据,但当我试图从函数中获取数据时,它没有进入变量。这是我尝试发送请求时的代码,即端口转发。我在x回调函数中得到响应,但未找到数据,因此任何知道的人请告诉我

var fs = require('fs');
var http = require('http');
var url = require('url') ,
httpProxy = require('http-proxy');
var express = require("express");


 //
 // Create your proxy server
//
httpProxy.createServer(9000, 'localhost').listen(8000);

 //
// Create your target server
//
 http.createServer(function (req, res) {

res.writeHead(200, { 'Content-Type': 'text/plain' });

//res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true,      2));

 var queryObject = url.parse(req.url,true).query;


 res.writeHead(200);
 if(queryObject['id']!==undefined){
  console.log(queryObject);
  //alert(queryObject['id']);
 if(queryObject['id'].match('100'))
{
  res.write(queryObject['id']+" forwarding to another port 8000");

  //sending request
  var options = {
            host: '192.168.10.33',
            port: 8080,
            path: '/demo.js?id='+queryObject['id'],
            method: 'GET',
            headers: {
                accept: 'text/plain'
            }
        };

        console.log("Start conecting ...");
        var x = http.request(options,function(res2){
            console.log("Connected.");
            res2.on('data',function(data){
  //*********
 //Here is the problem occur this data i m cloud not able to print 
 //********
                console.log("data-> "+data);

            });
        });

        x.end("\n ok");
  //end 

    }
   else
   {
  res.write("listening on current port");
  }
  }
   res.end("\n end of page ");//'\n\nFeel free to add query parameters to the end of the url');
 //res.end();
  }).listen(9000);

我相信响应数据是分块的,所以您需要继续加载数据,并将其发送到缓冲区,然后将其记录到控制台,其中一个数据已完成存储

e、 g

Src:

var http = require('http');

//The url we want is: 'www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
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) {
  var str = '';

  //another chunk of data has been recieved, so append it to `str`
  response.on('data', function (chunk) {
    str += chunk;
  });

  //the whole response has been recieved, so we just print it out here
  response.on('end', function () {
    console.log(str);
  });
}

http.request(options, callback).end();