如何从node.js中的HTTP请求函数返回值?

getStockValue()函数是通过以下方式从另一个JavaScript文件中调用的:

var r=require("./stockfile"); var returedData = r.getStockValue()); 

这里返回的数据只包含“-START-”。

我的目标是接收到响应之后获取从函数返回的body对象。 我试图把一个返回语句放到' close '事件处理程序中,但是它不起作用。

我该怎么做?

 function getStockValue() { var http = require('http'); var options = { host: 'in.reuters.com', path: '/finance/stocks/overview?symbol=RIBA.BO', method: 'GET' }; var body = "--START--"; var req = http.request(options, function (res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.on('data', function (chunk) { body += chunk; }); res.on('close', function () { console.log("\n\nClose received!"); }); }); req.on('error', function (e) { console.log('problem with request: ' + e.message); }); req.end(); return body + '... recieved'; } exports.getStockValue = getStockValue; 

因为这是一个asynchronous操作,如果马上返回并继续在后台运行,那么为什么只接收-START- 。 你可以在callback函数的帮助下解决这个问题。 就是这样:

调用函数如下:

 r.getStockValue(function(result) { var returedData = result //... rest of your processing here })); 

并在getStockValue函数内更改为:

 function getStockValue(callback) { ... res.on('data', function (chunk) { body += chunk; callback(body); }); ... }