改用requestAnimationFrame ..这不会占用你的 CPU。
简而言之,setInterval 无法与我们的 cpu 交互,并且不必要地最终使您的调用排队并浪费大量 cpu 周期
RequestAnimationFrame 可以巧妙地工作,并允许您在不增加浏览器负担的情况下操纵帧速率。
我刚刚回答了一个类似的问题。
LINK-->用 RAF 替换 setinterval
它具有初学者应该遵循的所有链接!
而不是清除间隔使用cancelAnimationFrame
只是一个关于你应该如何处理事情的片段。绝对是一个更好的解决方案。
// This makes sure that there is a method to request a callback to update the graphics for next frame
requestAnimationFrame =
window.requestAnimationFrame || // According to the standard
window.mozRequestAnimationFrame || // For mozilla
window.webkitRequestAnimationFrame || // For webkit
window.msRequestAnimationFrame || // For ie
function (f) { window.setTimeout(function () { f(Date.now()); }, 1000/60); }; // If everthing else fails
var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame;//for cancellation
// some code here
var progress = 0
function doSomething(){
if (progress != 100){
// do some thing here
var myAnimation = requestAnimationFrame(doSomething)
}else{
// dont use clearInterval(interval) instead when you know that animation is completed,use cancelAnimationFrame().
window.cancelAnimationFrame(myAnimation);
}