zoukankan      html  css  js  c++  java
  • vue定时器设置——页面未激活、路由切换进行销毁

    <template>
      <div>定时器demo</div>
    </template>
    
    <script>
    const hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null
    export default {
      data () {
        return {
          setInterval: null,
          visibilityChangeEvent: hiddenProperty.replace(/hidden/i, 'visibilitychange')
        }
      },
      created () {// 【定时拉取】:一般需要在使用时调用,而不是初始化
        this.clearSetInterval() // 调用之前必须清除原有定时器,否则会叠加
    this.addSetInterval() }, beforeDestroy () {// 【路由销毁】:清除定时器 console.log("路由销毁后"); this.clearSetInterval() document.removeEventListener(this.visibilityChangeEvent, this.onVisibilityChange);// 先移除具名函数(匿名函数无法移除) }, methods: { // 常规方法: addSetInterval () { let self = this const flag = true if (flag) {//触发定时器必须设置限制条件 self.loadData() //立即激活 document.addEventListener(this.visibilityChangeEvent, this.onVisibilityChange);// 添加页面关闭监听 self.setInterval = setInterval(() => { // 每10秒拉取一次 self.loadData() }, 3000) } }, // 清除方法: clearSetInterval () { if (this.setInterval) { clearInterval(this.setInterval) } }, onVisibilityChange () { let self = this if (!document[hiddenProperty]) { console.log('页面激活'); self.loadData() //立即激活 self.setInterval = setInterval(() => { self.loadData() }, 3000) } else {// 关闭窗口自动清除定时器 console.log('页面未激活'); self.clearSetInterval() } }, loadData () { console.log("调用接口"); } } } </script>

    备注:如果无页面激活问题,也可以在设置定时器时,直接设置销毁

    this.setInterval= setInterval(() =>{                    
        // 某些定时器操作                
    }, 500);            
    // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
    this.$once('hook:beforeDestroy', () => {            
        clearInterval(this.setInterval);                                    
    })

    -end-

  • 相关阅读:
    (二)unittest之跳过测试和预期失败的用例
    (一)基本使用
    python从入门到入魔
    (十)中断测试
    (九)进程测试
    (八)安装、卸载与升级更新测试
    (七)功能测试
    (六)内存分析,待补充
    (五)跑Monkey过程中出现的ANR问题分析
    (四)一种精准monkey测试的方法
  • 原文地址:https://www.cnblogs.com/wheatCatcher/p/12220930.html
Copyright © 2011-2022 走看看