是setTimeout / clearTimeout贵吗?

时间:2012-01-30 23:45:49

标签: javascript

我有以下内容:

var myTimeout;
function delayStuffUntil( when ){ 
  if( myTimeout) clearTimeout( myTimeout );
  myTimeout = setTimeout( stuff, when - Date.now() );
}

delayStuffUntil将被称为一个很好的协议,它可能会连续几次以when的相同值被调用。

setTimeout / clearTimeout是否足够昂贵以至于我应该根据我的when的最后一个值来检查当前的when(如果不同则仅更改计时器)?

我考虑过这样做,但事实是when比较繁琐,我认为过早的优化是所有邪恶的根源,所以当我没有时,我可能正在做工作需要。

2 个答案:

答案 0 :(得分:5)

setTimeoutclearTimeout本身并不是很贵。

真正的功能“东西”是你必须担心的。

如果内容需要很长时间才能运行,那么如果过于频繁地调用它,它可能会阻止UI。

答案 1 :(得分:0)

所以我刚刚发现了一些性能问题,我在鼠标移动时调用了clearTimeout和setTimeout(在chrome上)。它看起来比你想象的要贵。不知道为什么。