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');
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM