我有以下内容:
var myTimeout;
function delayStuffUntil( when ){
if( myTimeout) clearTimeout( myTimeout );
myTimeout = setTimeout( stuff, when - Date.now() );
}
delayStuffUntil
将被称为一个很好的协议,它可能会连续几次以when
的相同值被调用。
setTimeout
/ clearTimeout
是否足够昂贵以至于我应该根据我的when
的最后一个值来检查当前的when
(如果不同则仅更改计时器)?
我考虑过这样做,但事实是when
比较繁琐,我认为过早的优化是所有邪恶的根源,所以当我没有时,我可能正在做工作需要。
答案 0 :(得分:5)
setTimeout
和clearTimeout
本身并不是很贵。
真正的功能“东西”是你必须担心的。
如果内容需要很长时间才能运行,那么如果过于频繁地调用它,它可能会阻止UI。
答案 1 :(得分:0)
所以我刚刚发现了一些性能问题,我在鼠标移动时调用了clearTimeout和setTimeout(在chrome上)。它看起来比你想象的要贵。不知道为什么。