美文网首页
一个变量被赋值两个相同定时器导致的bug

一个变量被赋值两个相同定时器导致的bug

作者: SleepWalkerLj | 来源:发表于2023-12-19 16:23 被阅读0次

vue中,我在mounted和activated中都写了

this.timerObj = setInterval(() => {
         this.increaseReadTime(10);
       }, 3000);

然后在deactivated和destroyed中都写了

clearInterval(this.timerObj);
    this.timerObj = null;

  结果这个代码出现一个问题,回到上一页后,定时器还在运行
  研究了一会儿,发现这个setInterval执行了两次,导致往事件队列中塞入了两次setInterval函数,此时this.timerObj只指向其中一个,清除时也只能清除一个,并且在JavaScript中,定时器(由 setInterval 或 setTimeout 创建)不会被垃圾回收,即使没有对它们的引用。就导致另一个定时器仍然在事件队列中执行。

相关文章

  • let 和 const 比较

    相同点块级作用域内有效 不同点 const 变量一旦被赋值,不可重新赋值。 2.一旦声明变量,应该立即赋值。 误区...

  • Python中深拷贝、浅拷贝

    赋值 将一个变量赋值给另一个变量,这个过程叫做赋值。赋值会导致多个变量同时指向一块内存,所以此时不管是==或者is...

  • 03-- *(2019-10-09)-- 来 了解一下深拷贝和浅

    一个变量在赋值给另一个变量时是共享赋值变量的值,那么是浅拷贝;一个变量在赋值给另一个变量时是复制赋值变量的值给被赋...

  • python 函数式编程

    1. 高阶函数 函数本身可以做为变量赋值,如 这时候调用被赋值的函数变量,与函数的调用结果是相同的 函数名本身是一...

  • R语言与生信应用20-R语法-变量的作用域

    变量的作用域 变量与变量名 对相同的变量名多次赋值时,R如何识别该变量名所对应的值?一个例子: 当对 lm 赋值后...

  • C/C++基础(3)

    结构体 定义结构体的方式 结构体赋值 相同类型的两个结构体变量,可以相互赋值把t1成员变量的值拷贝到t2成员变量的...

  • net面试web篇

    1.javascript中的=,==,===区别。 =,是赋值运算。 ==,判断两个变量是否相同,仅限于值,如果值...

  • JS赋值、浅拷贝与深拷贝

    赋值 基本数据类型赋值,赋值之后两个变量互不影响 对引用类型进行赋址,两个变量指向同一个对象,改变变量 a 之后会...

  • javase part6 - 值传递和引用传递

    将一个引用类型的变量赋值给另一个同类型的引用类型的变量 两个变量将指向同一块内存区域,所以修改其中一个变量会导致所...

  • final关键字

    这里直接赋值指,在声明变量时就进行赋值。 修饰成员变量 直接赋值 构造方法内赋值 如果该成员变量被static修饰...

网友评论

      本文标题:一个变量被赋值两个相同定时器导致的bug

      本文链接:https://www.haomeiwen.com/subject/fywzgdtx.html