How to get the result inside callback function in javascript?

If I want to write the result inside callback function to response, but I can't access the res variable in the function, and also I can't access the result outside the function.

So how to pass value between inside and outside?

var http = require('http');
var url = require('url');

http.createServer
(
    function (req, res)
    {
        var output='';
        res.writeHead(200, {'Content-Type': 'text/plain'});


        //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);

            //output+=str; //get result
          });
        }

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


        //output+=str; //get result
        res.end(output);
    }
).listen(80, '127.0.0.1');

ver2

var http = require('http');
var url = require('url');

http.createServer
(
    function (req, res)
    {
        var output='';
        res.writeHead(200, {'Content-Type': 'text/plain'});


        //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 () {
            res.write('inside');
          });
        }

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

        res.write('outside');
        res.end(output);
    }
).listen(80, '127.0.0.1');

ver3

var http = require('http');
var url = require('url');

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


        //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(res) {
          var str = '';

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

          //the whole response has been recieved, so we just print it out here
          res.on('end', function () {
            res.write('inside');
            //or
            this.write('inside');
          });
        }

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


        res.write('outside');
        res.end();
    }
).listen(80, '127.0.0.1');

ver4

var http = require('http');
var url = require('url');

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


        //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 () {
            res.write('inside');
          });
        }

        http.request(options, callback);


        res.write('outside');
        res.end();
    }
).listen(80, '127.0.0.1');

You can't. The function that sets up the callback will have finished and returned before the callback executes. If it didn't, then the callback wouldn't be needed.

Do whatever work you need to do in the callback itself, not in the parent function.

I can't access the res variable in the function

You should be able to. It is still in scope.

(Although if you call end() on it before the callback runs, then breakage should be expected).