做一个调用天气API的练习,API用的是和风天气API。
index.js文件中负责更新页面数据的getWeather函数要拿到城市的id码,拿到城市的id码又要请求另一个url去拿,拿到id码的过程我封装在util文件里的getLocationID函数中。
但是返回id的语句写在了这个函数的一个wx.request函数的success状态中,原本以为getWeather函数会调用getLocationID函数获取相关数据,但实际根本拿不出来,不知道是哪里的逻辑错误,望有知者指正。
问题代码已发至:https://gitee.com/tracker647/problem
getLocationID(){ return wx.request({ url:'', success:function(res){ this.LocationId = res.data.LocationId }, error:function(res){ } }) } getWeather(){ return wx.request({ url:'', data:{ LocationId:this.LocationId }, success:function(res){ }, error:function(res){ } }) } async onLoad(){ await this.getLocationID() await this.getWeather() }
这样的问法,99%可以判断是异步问题。去了解一下:JS异步。
https://developer.mozilla.org/zh-CN/docs/learn/JavaScript/%E5%BC%82%E6%AD%A5/Async_await
async await