错误代码
setInterval(()=>{
// 定时调用
},1000*5)
这样写刷新浏览器也无法释放内存!!!
直接上代码:
function timerFun(f, time) {
let timer;
return function backFun() {
clearTimeout(timer);
timer = setTimeout(function () {
f();
backFun();
}, time);
};
}
timerFun(updateFormat, 1000)(); // updateFormat 定时调用的函数
为什么setinterval长时间运行会导致页面崩溃?
setInterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终卡死你的网页。
其原因与JS引擎线程有关(需深入研究JS引擎线程) ,但是setTimeout是自带清除定时器的。