I'm trying to get my function to return the http get request, however, whatever I do it seems to get lost in the ?scope?. I'm quit new to Node.js so any help would be appreciated
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); }
Of course your logs return undefined
: you log before the request is done. The problem isn't scope but asynchronicity.
http.request
is asynchronous, that's why it takes a callback as parameter. Do what you have to do in the callback (the one you pass to 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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With