我正在尝试创建一个从 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)
示例中的 JSON 如下所示:
{"ip": "127.0.0.1"}
所以上面的代码应该记录以下内容:
My IP is: 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)
}
})
数据按应有的方式显示在控制台中,但我找不到像上面提供的示例中那样使用它的方法。 有没有办法在不回调的情况下解决这个问题?我读到请求是异步的,但我需要一个同步解决方案。
最佳答案
不,没有办法同步执行此操作。您可以考虑使用 fetch api和一个async function如果您的环境支持它们。
例如:
async function getMyIpAndDoSomething() {
const response = await fetch("http://ip.jsontest.com/");
const object = await response.json();
console.log(object.ip);
}
关于javascript - 从 Node.js/JavaScript 中的 URL 返回 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105602/