javascript - 从 Node.js/JavaScript 中的 URL 返回 JSON 对象

标签 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)

示例中的 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/

相关文章:

ajax - 将 'Ajax updated' 数据集与交叉过滤器一起使用

node.js - fs.readFileSync 似乎比 fs.readFile 快 - 可以用于生产中的 Web 应用程序吗?

javascript - 在javascript中用多个定界符拆分方程字符串并保留定界符然后将字符串放回一起

javascript - Twitter Bootstrap 多个点击下拉菜单 - jQuery 帮助

json - 如何从 Snowflake 中的 VARCHAR 列中提取 JSON 值?

java - 使用eclipse将.xml文件转换为java中的.json文件?

node.js - 表达子域路由问题

javascript - 类型错误 : reply is not a function

javascript - $rootScope.$on 事件监听器函数不更改变量值

javascript - 单击提交后,包含注册表单的 Div 消失。