vue定时器无法清除

vue中设置的定时器无法清除

var count = 1;
this.codeNum = count;
this.timer = setInterval(() => {
  this.codeNum = count++;
  console.log(this.codeNum);
}, 1000);
setTimeout(() => {
  clearInterval(this.timer);
}, 10000);

10秒之后设置的定时器没有清除掉,this.codeNum的值还在一直增长,第一次遇到这种情况,人都疯了,也把this.timer打印到后台了,id值没有变过,但是就是清除不了,哪位大神帮忙看看,鄙人才疏学浅,真是没遇到这种情况😂😂

阅读 10.2k
7 个回答

语法上不存在错误,肯定是漏了一些条件。
果然,运行项目后,找到了问题:
image.png
这个语句用的是别的 timer 库(网页不需要),问题是你的 clearInterval 用的又不是这个库里面的,所以清除不了。

(顺带一提,你的项目组织不怎好,页面应该不应该放在 /components 里面,那里是放公共组件的,页面应该放在 /pages 内;布局有点问题,登录框应该有个最小宽度)

请这样写

clearInterval(this.timer); // 新增代码
var count = 1;
this.codeNum = count;
this.timer = setInterval(() => {
  this.codeNum = count++;
  console.log(this.codeNum);
}, 1000);
setTimeout(() => {
  clearInterval(this.timer);
}, 10000);

排查下这段代码是否重复执行了?按这逻辑如多次执行的话,clearInterval只能清掉最后的那个定时器

试了一下 定时器清理掉了
你是不是在其它地方也调用了呢

var count = 1;
var codeNum = count;
var timer = setInterval(() => {
  codeNum = count++;
  console.log(codeNum);
}, 1000);
setTimeout(() => {
  clearInterval(timer);
}, 10000);

clearInterval(this.timer);
this.timer = null;
请重新设置timer以清空内存

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏