Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
在javascript中,是否存在将API调用的json结果分配给变量的方法_Javascript_Node.js_Api_Openweathermap - Fatal编程技术网

在javascript中,是否存在将API调用的json结果分配给变量的方法

在javascript中,是否存在将API调用的json结果分配给变量的方法,javascript,node.js,api,openweathermap,Javascript,Node.js,Api,Openweathermap,我现在正在学习javascript,正在使用node和express开发天气应用程序。简言之,我试图使用一个来自OpenWeatherMap的api调用,并将其分配给一个变量,这样我就可以访问simlair到对象的值。我试着给变量赋值,但当我试图访问它时,它没有打印出所需的数据 var1=request.get(url, (error, response, body) => { let json = JSON.parse(body); console.log(json); });

我现在正在学习javascript,正在使用node和express开发天气应用程序。简言之,我试图使用一个来自OpenWeatherMap的api调用,并将其分配给一个变量,这样我就可以访问simlair到对象的值。我试着给变量赋值,但当我试图访问它时,它没有打印出所需的数据

var1=request.get(url, (error, response, body) => {
  let json = JSON.parse(body);
  console.log(json);

});

console.log(var1);//doesnt produce the data i need

如果
request.get
返回一个
Promise
,则可以:

例如:

const data = await request.get(url, (error, response, body);
请注意,这仅在
request.get
返回
承诺时有效。如果没有,请检查HttpClient的其他一些节点库:


No.
request.get()
是非阻塞和异步的。它在调用回调之前返回并继续运行后面的代码行。您必须在回调本身内部使用
body
值,或者调用函数并从函数内部传递
body
值。这就是node.js中异步编码的工作方式。另一个结构化选项是使用
request promise
,而使用
await
和返回的promise,它将获得更同步的代码(尽管仍然是异步的)。您可能会发现阅读这篇文章很有用。像这样的问题肯定有几百个副本,因为这是一个非常常见的问题。我建议在这里搜索“异步”、“同步”、“等待”、“回调”