javascript – setTimeout还是setInterval?

据我所知,这两个javascript的行为方式相同:

选项A:

function myTimeoutFunction()
{
    doStuff();
    setTimeout(myTimeoutFunction, 1000);
}

myTimeoutFunction();

选项B:

function myTimeoutFunction()
{
    doStuff();
}

myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);

使用setTimeoutsetInterval之间有什么区别吗?

解决方法:

他们基本上尝试做同样的事情,但setInterval方法将比setTimeout方法更准确,因为setTimeout等待1000ms,运行该函数,然后设置另一个超时.因此,等待时间实际上超过1000毫秒(如果您的函数需要很长时间才能执行,那么等待时间会更长).

尽管有人认为setInterval将每1000毫秒执行一次,但重要的是要注意setInterval也会延迟,因为JavaScript不是多线程语言,这意味着 – 如果脚本的其他部分正在运行 – 间隔将不得不等待完成.

this Fiddle中,您可以清楚地看到超时将落后,而间隔几乎是所有时间,几乎是1次/秒(脚本正在尝试这样做).如果将顶部的速度变量更改为小到20(意味着它将尝试每秒运行50次),则间隔将永远不会达到平均每秒50次迭代.

延迟几乎总是可以忽略不计,但是如果你正在编写一些非常精确的东西,那么你应该选择一个自我调整的计时器(它本质上是一个基于超时的计时器,它会根据创建的延迟不断调整自己)

上一篇:JavaScript定时事件


下一篇:数组中的javascript setInterval