您好我正在尝试使用回调方法通过http获取响应。但我得到一个错误,说回调不是一个功能。
module.exports.ipLookup = function (res, callback) {
var http = require('http');
var str = '';
var options = {
host: 'ip-api.com',
port: 80,
path: '/json/',
method: 'POST'
};
var str= "";
var req = http.request(options, function (res) {
res.on('data', function (body) {
str += body;
});
res.on('end', function () {
callback(str);
});
});
req.end();
return str;
}
id应该通过ip-api.com返回json api响应。如果有人可以帮助我,我们将不胜感激。
答案 0 :(得分:4)
在另一个文件中,您需要加载该函数,以确保使用回调参数。请参阅下面的代码段
var Lookup = require('./ip');
Lookup.ipLookup(function (response) {
console.log(response) // check if response is valid
})
您需要将导出的函数更改为仅接受一个参数,因为第一个参数未在函数体内使用,如此。
module.exports.ipLookup = function (callback) {
var http = require('http');
var str = '';
var options = {
host: 'ip-api.com',
port: 80,
path: '/json/',
method: 'POST'
};
var req = http.request(options, function (res) {
res.on('data', function (body) {
str += body;
});
res.on('end', function () {
return callback(str);
});
});
req.end();
}