美文网首页
一个变量被赋值两个相同定时器导致的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 创建)不会被垃圾回收,即使没有对它们的引用。就导致另一个定时器仍然在事件队列中执行。

    相关文章

      网友评论

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

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