问题描述:
1-setIterval()中嵌套使用,但这种情况下要保证内部严格完全正确执行,否则就会造成不断调用这个方法,会造成性能变差
2-在页面关闭时没有使用clearInterval()来把所有setInterval()清除,会一直执行,性能大大降低
原因分析:
1-内部调用函数是异步操作,与服务器产生交互,网络延迟等原因造成的阻塞,setInterval不会因此放慢请求,反而仍会定时发起请求,造成请求过多阻塞
2-setInterval内部进行了嵌套,嵌套内部又调用了异步操作,因为网络等原因无法正确执行的情况下,setInterval也不会在乎,还是在不管不顾的调用错误执行中的代码,重复调用并且嵌套调用,此时就可能会出现卡死的情况
解决方法:
1、递归调用setTimeout()
例如:
function changeInterval(){
setTimeout(()=>{
console.log("改变Interval为timeout")
changeInterval()
},200)
}
changeInterval()