此问题已在此处有答案:
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference(7个回答)
6小时前关闭
当我将对象 result 发送回前端时,它不会得到更新。在前端,它只显示发送了一个空对象。
- url* 已定义。API调用工作正常。当控制台登录在 response.on 中时,结果显示了正确的行为。然而,在 https 请求之外,它显示一个空对象,并且没有添加键值对。
app.post("/getWeather",(req,res,next)=>{
console.log(req.body.cities);
const cities=req.body.cities;
const result={};
cities.map((city)=>{
https.get(url,(response)=>{
response.on("data",(data)=>{
const wdata=JSON.parse(data);
const temperature=wdata.main.temp;
result[city]=temperature;
});
}).on("error",(err)=>{
console.log(err);
result[city]="NA";
});
});
return res.json(result);
});
前端结果输出= {}
1条答案
按热度按时间polhcujo1#
您需要将
https.get
调用 Package 到promise中。result
在return语句中是空对象的原因是因为https.get
是异步的,并且您不需要等待data
和error
处理程序被调用。