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