vue:使用settimeout获取接口数据

按照先从接口获取数据然后生成图表的思路,在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);
    },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值