在javascript中,是否存在将API调用的json结果分配给变量的方法
我现在正在学习javascript,正在使用node和express开发天气应用程序。简言之,我试图使用一个来自OpenWeatherMap的api调用,并将其分配给一个变量,这样我就可以访问simlair到对象的值。我试着给变量赋值,但当我试图访问它时,它没有打印出所需的数据在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); });
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,它将获得更同步的代码(尽管仍然是异步的)。您可能会发现阅读这篇文章很有用。像这样的问题肯定有几百个副本,因为这是一个非常常见的问题。我建议在这里搜索“异步”、“同步”、“等待”、“回调”