清除定时器 和 vue 中遇到的定时器setTimeout & setInterval问题

 


2019-03更新

找到了更简单的方法,以setinterval为例,各位自行参考

mounted() {
    const that = this
    const timer = setInterval(function () {
      //这里是想轮循的部分
      }
    }, 4000) // 4000ms = 4s
    // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
    this.$once('hook:beforeDestroy', () => {
      clearInterval(timer) // 此处的timer即 上文const的 timer
    })
  }

 

建议使用这个方法。后文可忽略

 

 

--------------VUE项目中遇到一个问题。a.vue 文件中触发setTimeout后,使用按钮跳转至其他页面,快速返回至a.vue页面后 发现定时器仍然在走。

例子:a.vue代码

window.setTimeout(function(){
 window.location.href = "/serverMonitor?t="+ new Date().getTime();
},5000)

解决办法:

window.setTimeout(function(){
    if(this && !this._isDestroyed){ //_isDestroyed 组件是否被销毁
        return; 
    }
    window.location.href = "/serverMonitor?t="+ new Date().getTime();
},5000)

--------------清除定时器

定时器一般有两个

1、setTimeout();//n毫秒后执行一次

2、setInterval();//每隔n毫秒执行一次

setTimeout()对应的是 clearTimeout(funName);

setInterval()对应的是 clearInterval(funName);

  

<script>
   var funName1 = setTimeout(function(){
       return ;
   },1000);
 
    var funName2  = setInterval(function(){
        return fun2;
    },1000)
  
    //清除Timeout的定时器,传入id(创建定时器时会返回一个id)
    clearTimeout(funName1 );
  
    //清除Interval的定时器,传入id(创建定时器时会返回一个id)
    clearInterval(funName2  );
//也可以使用return值 来清除
setTimeout(function(){
  console.log("33");
  return 33;
},3000);
 clearTimeout(33);
1
</script>

  

 

 

转载于:https://www.cnblogs.com/ximiximi-blog/p/7199576.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值