Javascript setTimeout计时可靠性

时间:2013-12-24 11:59:34

标签: javascript settimeout timing

我最近开始更详细地探索Javascript,以及它在浏览器中的执行方式。具体来说,就是setTimeout函数。

我的理解是呼叫setTimeout(foo,x) 会将句柄传递给foo,以便在x毫秒后执行。这个时间有多可靠?显然,如果另一个长时间运行的脚本在x毫秒后仍在执行,那么浏览器将无法调用foo,但我是否可以绝对确定setTimeout(foo,101)之后将始终执行setTimeout(foo,100)

2 个答案:

答案 0 :(得分:1)

首先,超时以毫秒为单位,因此1秒= 1000毫秒。考虑一下。 你可以随时确保延迟1001晚于1000。 但是你必须记住,如果第二种方法继续改变第一种方法,它并不意味着它会运作良好。 第一种方法可以花费3ms的合理时间(不是复杂的),第二种方法可以在第一种方法之后仅1 ms开始,导致第一种方法的可靠性失败。 我建议不要使用此功能,但在极少数情况下。

您可以在此答案评论中为我的具体案例添加标签,我可以建议正确的解决方法。

答案 1 :(得分:0)

大多数浏览器使用单线程进行UI和JavaScript,这会被同步调用阻止。因此,JavaScript执行会阻止渲染。

  

除DOM事件外,异步处理事件。

setTimeout(function(),1000)技巧非常有用。它允许:

  

让浏览器呈现当前更改。避免“脚本运行时间过长”的警告。   更改执行流程。在超时和线程方面,Opera在很多地方都很特别。

因此,如果另一个函数正在执行,它将通过并行运行来处理它。

另一件事setTimeout(function(),1000)她的时间是毫秒而不是几秒钟。

相关问题