以下列方式从另一个javascript文件调用getStockValue()函数:
var r=require("./stockfile");
var returedData = r.getStockValue());
此处的returnData仅包含“-START - ”。
我的目标是从<+ em> 接收响应后的 函数返回正文对象。我已经尝试将return语句放入' 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;
答案 0 :(得分:10)
由于这是一个异步操作,如果直接返回并继续在后台运行,那么为什么你只收到-START-
。您可以借助回调函数解决此问题。继承人如何:
按如下方式调用该函数:
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);
});
...
}