javascript - 设置超时或设置间隔?

标签 javascript setinterval

据我所知,这两个 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/

相关文章:

javascript - 更改 Highcharts 中的鼠标悬停点

javascript - 无法更改 js 中的文本,类文本

javascript - 当 get() == 'finished' 时停止 jquery setInterval ?

javascript - setInterval 有效但延迟了一个周期

javascript - 如何在fancytree.js上点击第二级时发出提醒消息

Javascript 正则表达式 : surround @_____, #____,和 http ://______ with anchor tags in one pass?

javascript - 用 Angular 计算坐标

jquery - 如何使用 jQuery 使阴影闪烁?

javascript - 结合 for 循环与 setInterval()

javascript - 按照 setInterval 中的顺序执行异步代码