按照先从接口获取数据然后生成图表的思路,在data里给图表需要的数据一个初始值,然后在mounted里面按照先后顺序调用了获取数据和初始化图表的方法。
但是执行后发现,initMap永远获取到的是data里stations的初始值,而不是getGasStationInfo()里从接口获取的值,接口调用没问题,也能打印出来数据,但initMap就是一直得不到接口返回的数据。
问题排查:
1、this指向是否有误,我直接用的=>方法,指向vue,并且打印this后也确实指向vue,所以可以排除是this指向问题。
2、同步消息和异步消息问题,想要了解更详细,可以自行百度,简单来说,对于我这个案例,就是 this.getGasStationInfo();接口返回的是异步消息,比下一句的this.initMap();会晚一点执行,所以this.initMap();总是拿不到接口返回的数据,总是读取data里初始化的数据,用一个简单粗暴的办法就是接口请求后,延迟一秒钟,再执行this.initMap();
代码如下:
mounted() {
this.getGasStationInfo();
setTimeout(() => {
this.initMap();
}, 1000);
},