我是 node 的初学者,如果这个问题太明显了,请原谅。我也尝试了官方文档,但我可以解决这个问题。
我的 Node 服务器正在通过服务与外部 api 通信。
这是我目前在我的服务 api-service.js 中得到的:
var http = require('http');
exports.searchNear = function(lat, long, next){
var options = {
host: '1xx.xx.1xx.1x',
path: '/api/v1/geo,
method: 'GET'
};
var req = http.request(options, function(res) {
var msg = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
msg += chunk;
});
res.on('end', function() {
console.log(JSON.parse(msg));
});
});
req.on('error', function(err) {
// Handle error
});
req.write('data');
req.end();
var mis = 'hello';
next(null, mis);
此时我可以获取 Json 并将其记录到控制台中。但我想将返回的 json 存储在一个变量中,这样我就可以传入 next() 回调。
我尝试向结束事件添加回调,例如:
exports.searchNear = function(lat, long, next){
....
.....
var req = http.request(options, function(res) {
.....
res.on('end', function(callback) {
console.log(JSON.parse(msg));
callback(msg);
});
});
....
req.end('', function(red){
console.log(red);
});
}
提前谢谢你。
最佳答案
代码中回调的名称应该是“next”:
var http = require('http');
exports.searchNear = function(lat, long, next) {
var options = {
host: '1xx.xx.1xx.1x',
path: '/api/v1/geo,
method: 'GET'
};
var req = http.request(options, function(res) {
var msg = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
msg += chunk;
});
res.on('end', function() {
console.log(JSON.parse(msg));
next(null, msg);
});
});
req.on('error', function(err) {
// Handle error
});
req.write('data');
req.end();
}
然后你应该像这样使用你的函数:
searchNear(myLong, myLat, function (err, mesg) {
console.log('your JSON: ', mesg)
});
关于javascript - http请求获取正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970839/