如何从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); }); ... }
- 为什么我只能发送5个请求,如果我不听数据事件?
- 限制Node.js中同一主机的并发连接
- 带有NodeJS GET请求的AngularJS失败 – “Access-Control-Allow-Headers不允许Access-Control-Allow-Headers”
- Nodejs http请求不工作
- 创build一个可以在发送给客户端之前修改http响应的http代理
- 在使用nodejs passport来集成第三方平台时,发生InternalOAuthError
- 请求遵循redirect,无需发布数据
- 如何在节点中通过HTTP读取二进制文件?
- 身份validation代理 – req.user.sub持久性?