【发布时间】:2021-08-06 08:49:58
【问题描述】:
您好,我正在尝试通过 openwheather api 获取天气并将其发布在网页上。 但是,在测试的过程中,我发现了一个可能导致问题的部分。
var my_weather = {};
request.get(
"http://api.openweathermap.org/data/2.5/weather?lat=37.3578631&lon=126.9395806&appid=40e3257323ba173186324d66fac45a1f",
function (req, res) {
data = JSON.parse(res.body);
my_weather.weather_main = data.weather[0].main;
my_weather.temp = Math.round(data.main.temp - 273);
my_weather.humidity = data.main.humidity;
console.log(my_weather);
}
);
console.log(my_weather);
这段代码执行时,请求函数中的console.log()之前执行了外层console.log(),并显示一个空对象。如何在上面的代码中等待天气保存,然后执行下面的代码。有没有?我尝试使用异步等待,但它不起作用,所以请告诉我如何
【问题讨论】:
-
感谢您的帮助!
-
您不能让 Javascript “等待”非阻塞、异步操作(例如网络请求)完成。相反,您必须使用回调、promise 或事件将完成返回给调用者。同时,该函数将在异步操作完成之前返回,调用者将使用回调、承诺或事件来了解操作何时完成以及最终结果是什么。有关您所拥有选项的完整说明,请参阅标记为重复的问题。
-
我会根据您所说的了解更多信息,谢谢
标签: node.js asynchronous request