vue 全局定时更新 轮询

首先需要在最外层的父组件定义一个刷新的时间 初始值为nulll, 在定义一个新时间用于监听状态的变化。

data () {
    return {
      dataTime: 0,
      inverterMonTimer: null, // 设置刷新时间 2 分钟一次
    }
  },

然后再钩子函数中执行定义封装的方法

mounted(){
 this.getInverterMonTimer()
},
记得清空定时器
 beforeDestroy(){
    if (this.inverterMonTimer) {
      clearInterval(this.inverterMonTimer);
      this.inverterMonTimer = null;
    }
  },

methods:{
    getInverterMonTimer () {
      // 判断定时刷新是否存在,存在先清除
      if (this.inverterMonTimer) {
        clearInterval(this.inverterMonTimer);
        this.inverterMonTimer = null;
      }
      // 实现轮询 两分钟执行一下
      this.inverterMonTimer = window.setInterval(() => {
        this.dataTime = new Date().getTime();
      }, 120000);
    },
   }

然后再 template 中找到我们的父组件 component 把时间穿进去,在子页面接收并监听这个时间,去触发接口更新后,每间隔时间查询更新接口。

  

在需要的子组件中接收props:{}

 props:{
    dataTime:{
      type: Number,
      default:() => {
        return 0
      }
    }
  },
watch: {
    dataTime: {
      immediate: true,
      handler (val) {
        this.getCoalTrackData() //
      }
    }
  },
mounted () { this.getCoalTrackData() // 页面加载后接口调取}

你可能感兴趣的:(vue.js,前端,javascript)