为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout的最小毫秒值是多少?

setTimeout的最小毫秒值是多少?

catspeake 2019-07-25 09:50:22
setTimeout的最小毫秒值是多少?我想说var minValue = 0;if ( typeof callback == 'function' ) {     setTimeout( callback, minValue );}当我用JavaScript实现回调函数时这个代码。但我发现现代浏览器和一些旧浏览器具有不同的最小超时值。我知道Zero不能是最小值。setTimeout的最小值是多少?现代浏览器和一些旧浏览器的兼容性问题?
查看完整描述

3 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我认为10将是所有浏览器中最可靠的最小值,因为我已经看到很多代码使用它。

但是,4毫秒是HTML5的最小值

事实上,4毫秒是由HTML5规范指定的,并且在2010年及之后发布的浏览器中是一致的。在(Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2)之前,嵌套超时的最小超时值为10 ms。


查看完整回答
反对 回复 2019-07-25
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

在现代浏览器中,最小值是4ms(从HTML5开始),在此之前,它是10ms。请注意,这些时间永远不会100%准确。


查看完整回答
反对 回复 2019-07-25
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

setTimeout最有可能是调用sleepSleep系统调用

实际的机制,包括最小毫秒数,setTimeout是专有的和/或系统相关的,因为它们不在官方的ECMA规范中。这取决于您的Javascript运行时,以及您运行它的系统。鉴于,您的Javascript运行时不会增加大量开销,最小毫秒数由操作系统和硬件的时间片分辨率决定。最小的“可睡眠”时间通常是系统的调度算法为进程分配另一个时间片所需时间

例如,在Windows(XP后)上,睡眠系统调用的文档显示:

值为零会导致线程将其时间片的剩余部分放弃到准备运行的任何其他线程。如果没有其他线程准备好运行,则该函数立即返回,并且线程继续执行。

这意味着,在一些非常罕见的情况下,当前没有其他进程在硬件线程上等待运行Javascript运行时进程,它可能会在调用程序完成执行后立即继续,具体取决于Javascript运行时的方式实施。你可能不会经常观察到这种情况:)


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 2966 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信