js页面跳转到其他页面上时对定时器的清除

最近再改一个旧项目的bug,需要用到setInterval定时器的功能来每隔几秒调用一次接口。不过为了不影响性能,在跳转到其他页面时需要清除定时器。这个项目是用的jquery写了,所以不能用react框架那样有提供生命周期函数来清除定时器。

  一开始想在起始index.js定义一个全局变量如:window.intervalId,  在需要定时器页面:

window.clearInterval(window.intervalId);
window.intervalId = window.setInterVal(function() {}, 5000);

然后在其他页面上清除定时器,加上代码

window.clearInterval(window.intervalId);

不过貌似没啥效果。

  后面换了一种思路,就跟react组件卸载时触发生命周期函数类似,我在定时器里面去判断该页面的dom元素是否存在来确定是清除定时器还是继续跑定时器

var intervalId;
window.clearInterval(intervalId);
intervalId = window.setInterval(func, 5000);

func() {
    if(document.getElementById('pageId') === null){
         window.clearInterval(intervalId);
         return;     
   }    
   yourFunc();
}

yourFunc() {
    console.log('yourFunc');
}

 

posted on 2019-04-03 14:54  卖火柴咯  阅读(6065)  评论(1编辑  收藏  举报

导航