据我所知,这两个javascript的行为方式相同:
选项A:
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
选项B:
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
使用setTimeout和setInterval之间有什么区别吗?
解决方法:
他们基本上尝试做同样的事情,但setInterval方法将比setTimeout方法更准确,因为setTimeout等待1000ms,运行该函数,然后设置另一个超时.因此,等待时间实际上超过1000毫秒(如果您的函数需要很长时间才能执行,那么等待时间会更长).
尽管有人认为setInterval将每1000毫秒执行一次,但重要的是要注意setInterval也会延迟,因为JavaScript不是多线程语言,这意味着 – 如果脚本的其他部分正在运行 – 间隔将不得不等待完成.
在this Fiddle中,您可以清楚地看到超时将落后,而间隔几乎是所有时间,几乎是1次/秒(脚本正在尝试这样做).如果将顶部的速度变量更改为小到20(意味着它将尝试每秒运行50次),则间隔将永远不会达到平均每秒50次迭代.
延迟几乎总是可以忽略不计,但是如果你正在编写一些非常精确的东西,那么你应该选择一个自我调整的计时器(它本质上是一个基于超时的计时器,它会根据创建的延迟不断调整自己)