计时器的内存泄露

前言:这是一个很无聊的坑,但是不太容易去注意到。

 

简述一下,通常使用计时器都要记得清除定时器,来避免造成内存泄露。

 

上问题代码:

1 let time = 0   
2  this.timer = setInterval(() => {
3       if (time <= 1) {
4         time= time + 0.2
5       } else {
6         this.timer = null;
7         clearInterval(this.timer);
8       }
9     }, 1000)

上诉代码,貌似没问题,实际问题很大

由于this.timer直接赋值为空后,clearInterval(this.time), 反而清除失败,而这种属于细节问题,平时代码不注意即可能出现。

解决代码:

1 let time = 0   
2   this.timer = setInterval(() => {
3        if (time <= 1) {
4          time= time + 0.2
5        } else {
6        clearInterval(this.timer);

7 this.timer = null;
8  } 

9 }, 1000)

调整一下位置即可。

posted @ 2020-12-22 16:32  志在指尖  阅读(276)  评论(0编辑  收藏  举报