您好,我正在尝试使用回调方法通过 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 响应。如果有人可以帮助我,我将不胜感激。
最佳答案
在您加载函数的另一个文件中,您需要确保使用了回调参数。请参阅下面的代码段
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();
}
关于javascript - Node JS 上的 HTTP 请求回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851938/