间隔一段时间调一次接口

问题描述:

直接用setInterval调接口,会导致一直不间断的调用,不管上次调用是否请求成功,有可能会导致程序报错。经过一个贵人讲解之后受益匪浅,记录一下。

如何解决这个问题?

用setTimeout模拟setInterval

//handleKLineSuccess表示当折线图初始化完成
handleKLineSuccess() {
		//getFirstRealtime()调接口方法
        this.getFirstRealtime().then(() => {
          this.fetchDataPerMinute();
        });
      },
fetchDataPerMinute() {
        setTimeout(() => {
        //getDataRealtime()为封装好的调接口方法,略过
          this.getDataRealtime().then(() => {
            if (this.fetchDataTimer) {  // 如果不关闭页面
              this.fetchDataPerMinute();
            }
          });
        }, 30000);
      },
//fetchDataTimer字段来控制是否继续调用fetchDataPerMinute();
beforeDestroy() {
      this.fetchDataTimer = false;
    },

讲解运行步骤:

  1. 调用折线图初始化完成方法handleKLineSuccess()
  2. 调用接口方法getFirstRealtime()
  3. getFirstRealtime()请求成功之后,调用fetchDataPerMinute()方法
  4. 等待30秒
  5. 调用接口方法getDataRealtime()
  6. getDataRealtime()请求成功
  7. 再次等待30秒
  8. 继续调用getDataRealtime()接口方法
  9. 间隔30秒继续调…
  10. 当关闭页面时,即this.fetchDataTimer = false; 此时取消定时调用getDataRealtime()方法
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值