从Node.js/JavaScript中的URL返回JSON对象
我试图创建一个函数,从URL返回一个JSON对象。 它应该是这样工作的:从Node.js/JavaScript中的URL返回JSON对象,javascript,json,node.js,object,url,Javascript,Json,Node.js,Object,Url,我试图创建一个函数,从URL返回一个JSON对象。 它应该是这样工作的: function getObject(url) { // return undefined when the url or json is invalid return object; } 因此,如果我使用以下URL,我可以这样使用它: var object = getObject('http://ip.jsontest.com/'); console.log('My IP is: ' + object.ip)
function getObject(url) {
// return undefined when the url or json is invalid
return object;
}
因此,如果我使用以下URL,我可以这样使用它:
var object = getObject('http://ip.jsontest.com/');
console.log('My IP is: ' + object.ip)
示例中的JSON如下所示:
{"ip": "127.0.0.1"}
因此,上面的代码应该记录以下内容:
我的IP是:127.0.0.1
我已经在请求模块中尝试过了,并在StackOverflow上找到了以下示例:
request.get({
url: 'http://ip.jsontest.com/',
json: true,
headers: {'User-Agent': 'request'} }, (err, res, data) => {
if (err) {
console.log('Error:', err)
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode)
} else {
// data is already parsed as JSON:
console.log(data)
}
})
数据按其应有的方式显示在控制台中,但我发现没有办法像上面提供的示例中那样使用它。
有没有一种不用回调就能解决这个问题的方法?我了解到请求是异步的,但我需要一个synchronus解决方案。不,没有同步的方法。如果您的环境支持和,您可以考虑使用 例如: 异步函数getMyIpAndDoSomething(){ const response=等待获取(“http://ip.jsontest.com/"); const object=wait response.json(); console.log(object.ip); }
Node.js异步运行。您可以使用Promissions或Async/Await。您不应该需要同步解决方案。如果您采用异步编程模式(如承诺),则无需这样做。可以通过使用承诺使其同步,等待您得到所有异步值如何工作的响应。你等待回应。但您无法同步获取。