良好实践中有多少setIntervals太多了?

时间:2011-10-07 23:57:12

标签: javascript

我喜欢用我的网站添加效果(不是太多),但我通常会有3-4个间隔。只是想知道是否有人知道我是否在伸展障碍,或者如果我想要的话我可以拥有更多吗?

3 个答案:

答案 0 :(得分:5)

我建议任何setinterval都太多,你应该总是使用settimeout。原因是javascript是单线程的。这意味着如果某些代码(可能是setinterval中的函数)阻止超时调用,则setinterval将继续发出对该函数的更多调用。间隔较小会导致函数调用堆积起来,导致很难找到/重现错误。

这里的最佳做法是在函数本身内使用settimeout。所以,如果你以前有过:

function foobar()
{
// do some stuff 
}
setInterval(foobar, 100)

您应将其更改为:

function foobar()
{
//do some stuff
setTimeOut(foobar, 100)
}

这有一个额外的好处,你可以添加一些逻辑来检查你是否真的想再次运行该函数。

答案 1 :(得分:2)

如果您害怕拥有多个计时器,请使用1个计时器,并在计时器倒数第n次时触发效果。这取决于你想要做什么。

答案 2 :(得分:1)

这实际上取决于每个人执行的时间以及每个人之间的延迟。

您的浏览器会将这些呼叫排队,因此如果您担心会降低用户的浏览体验(或生涩的动画),您可能会使用一些相当简单的时间码来检测您是否缺少所需的间隔。然后,您可以减少(或增加)适当显示的效果数量。