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-

  • 相关阅读:
    前端打包利器:webpack工具
    asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
    C#报错:创建调试信息文件 ……objDebugmodel.pdb: 拒绝访问
    ts 使用Visual Studio2012和TFS网站管理源代码
    Win7(包括32和64位)使用GitHub
    C#程序开发中经常遇到的10条实用的代码
    简单优化实现大数据量的重复判断和导入
    Asp.Net修改上传文件大小限制(修改web.config)
    XlFileFormat
    Excel 2007中的新文件格式
  • 原文地址:https://www.cnblogs.com/wheatCatcher/p/12220930.html
Copyright © 2011-2022 走看看