gpt4 book ai didi

javascript - 为什么 settimeout(function(), 0 ) 和 function() 之间的执行时间不同?

转载 作者:行者123 更新时间:2023-11-30 10:40:53 25 4
gpt4 key购买 nike

我有一个 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 Canvas 上绘制一些像素。我省略了这些代码以使我的问题更清楚。

最佳答案

这样做的原因在于 JavaScript 在内部处理计时器的方式。由于 JavaScript 是单线程的,因此不会同时运行任何东西。将 0 毫秒传递给 setTimeout 只会强制函数在第一个可用时刻运行。 John Resig 在 http://ejohn.org/blog/how-javascript-timers-work/ 上写了一篇很好的文章.

您可以通过运行以下命令来查看:

setTimeout(function() {
console.log('one');
}, 0);
console.log('two');

twoone 之前记录。

我假设你有一堆其他事情正在运行,并且通过排队 animate 你让执行等到其他事情完成。

关于javascript - 为什么 settimeout(function(), 0 ) 和 function() 之间的执行时间不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com