Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Node.js/JavaScript中的URL返回JSON对象_Javascript_Json_Node.js_Object_Url - Fatal编程技术网

从Node.js/JavaScript中的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)

我试图创建一个函数,从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"}
因此,上面的代码应该记录以下内容:

我的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。您不应该需要同步解决方案。如果您采用异步编程模式(如承诺),则无需这样做。可以通过使用承诺使其同步,等待您得到所有异步值如何工作的响应。你等待回应。但您无法同步获取。