【发布时间】:2012-06-18 18:28:20
【问题描述】:
我有一个 javascript 动画代码 -
function animate(position)
{
....
....
if(position++ < xyz){
animate(position); // ****this is the line that I replace with in the next attempt.
}
}
这需要大约 1 秒的时间来执行。但如果我把超时功能设置为 0 时间,大约需要 15 秒才能完成。
setTimeout(function(){
animate(position);
}, 0);
为什么会出现这种巨大的时差?在代码中,我试图在 HTML5 画布上绘制一些像素。为了让我的问题更清楚,我省略了这些代码。
【问题讨论】:
-
func()将立即执行该函数,而setTimeout(func, 0)将在当前执行完成后执行func。如果您正在做许多其他事情,这可能会延迟func的执行(尽管 15 秒似乎有点多)。 -
在我的循环中,在 animate 语句之后没有任何内容。所以 settimeout(0) 也应该意味着立即执行。
-
整个动画延迟15秒。循环重复大约 1000 次。所以每个循环有 15 毫秒的延迟。
标签: javascript animation settimeout