Javascript setInterval-如何设置良好的计时和性能

Javascript setInterval-如何设置良好的计时和性能,javascript,performance,setinterval,Javascript,Performance,Setinterval,我正在编写一个简单的jquery插件,它允许我在特定的滚动位置向元素添加类。为了实现这一点,而不是绑定onScroll事件,我调用了一个setInterval函数来检查当前的Y页偏移量: 间隔=window.setIntervalueUpdate,25 您看,我将间隔设置为25毫秒。我想知道这是否是一个正确的时间,以及性能如何有效地发挥作用。我认为性能方面您最好使用下面的代码,通过这种方式,您可以确保更新函数仅在运行更新函数完成时触发 function update() { //do stu

我正在编写一个简单的jquery插件,它允许我在特定的滚动位置向元素添加类。为了实现这一点,而不是绑定onScroll事件,我调用了一个setInterval函数来检查当前的Y页偏移量:

间隔=window.setIntervalueUpdate,25


您看,我将间隔设置为25毫秒。我想知道这是否是一个正确的时间,以及性能如何有效地发挥作用。

我认为性能方面您最好使用下面的代码,通过这种方式,您可以确保更新函数仅在运行更新函数完成时触发

function update() {
  //do stuff
  setTimer(); 
}

function setTimer() {
  timeout = window.setTimeout(update(), 25);
}

为了提高动画制作时的性能,最好使用“requestAnimationFrame”。这样,当选项卡处于非活动状态时,浏览器不会一直在更新,它可能会进行一些额外的优化


大多数浏览器还不支持requestAnimationFrame,但是——当然——Paul Irish已经准备好了一个漂亮的polyfill:

为什么不使用onscroll事件?我之所以这么问,是因为如果可能的话,我会尽量避免轮询。您应该从SetTimeOut的第一个参数中删除括号。我想了解的一件事是,您如何使用requestAnimationFrame设置清除间隔事件,您是否有过此方面的经验webkitCancelRequestAnimationFrame不是吗?它不应该是timeout=window.setTimeoutupdate,25;