我有类似以下的内容:
var myTimeout;
function delayStuffUntil( when ){
if( myTimeout) clearTimeout( myTimeout );
myTimeout = setTimeout( stuff, when - Date.now() );
}
delayStuffUntil
会被调用多次,并且很可能会连续几次使用相同的when
值。
我是否应该检查当前的when
与上一次的值是否相同,然后仅在不同的情况下更改定时器,因为setTimeout
/clearTimeout
是否足够昂贵?
我考虑过这个问题,但事实上比较when
有点麻烦,而且我认为过早地优化是万恶之源,所以我可能没必要费力气。
setTimeout
和clearTimeout
没有基准,但是考虑到它们在每个JS动画框架中都是多么低级,我倾向于说“不”。 - zzzzBovsetTimeout(computeHugeFractal, 10);
<-- 很耗费资源!setTimeout(function() { }, 10);
<--- 很便宜。 - Ed S.