组件方法轮询方案

该文介绍了一个Vue组件方法,用于实现函数的定时轮询调用,适用于数据定时更新的场景,如大屏可视化项目。通过Vue.mixin混入,可以方便地在组件中启动和停止轮询任务,支持自定义调用间隔,并在组件销毁时自动清除定时器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组件方法轮询解决方案

作用

实现函数的轮询调用

场景

通过轮询调用函数,实现数据定时更新(比如大屏可视化项目)

特点
  1. 调用后会立即执行函数
  2. 组件销毁时自动清除定时器
  3. 单个实例组件支持多个不同的轮询任务
  4. 支持调用频率间隔的自定义配置
适用版本

vue2.0

使用方法
  1. 通过Vue.mixin混入

  2. 调用

    import loopQuery from '@/mixins/loopQuery.js';
    
    export default {
    	name: 'App',
        mixins: [loopQuery],
    	mounted() {
    		this.startLoopQuery(this.getData, 60 * 1000)
    	},
    	methods: {
    		getData() {
    			// 调用接口,获取响应数据
    		}
    	}
    }
    
源码
export default {
  created() {
    this._timerMap = new Map();
  },
  destroyed() {
    for (const callback of this._timerMap.keys()) {
      this._clearTimer(callback);
    }
  },
  methods: {
    // callback 轮询调用的函数
    // interval 时间间隔(毫秒,默认30s)
    startLoopQuery(callback, interval = 30 * 1000) {
      if (typeof callback !== 'function') {
        return;
      }
      this._clearTimer(callback);
      const loop = () => {
        callback();
        this._timerMap.set(callback, setTimeout(loop, interval));
      }
      loop();
    },
    _clearTimer(callback) {
      if (this._timerMap.has(callback)) {
        clearTimeout(this._timerMap.get(callback));
        this._timerMap.delete(callback);
      }
    },
  },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值