节点JS上的HTTP请求callback
嗨我想通过使用callback方法的http获得响应。 但是我得到一个错误,说callback不是一个函数。
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; }
什么是应该通过ip-api.com返回json api响应。 如果任何人都可以帮助我,这将不胜感激。
在另一个文件中,您需要确保使用callback参数。 见下面的代码片段
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(); }