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