setTimeout的最小毫秒值是多少?我想说var minValue = 0;if ( typeof callback == 'function' ) {
setTimeout( callback, minValue );}当我用JavaScript实现回调函数时这个代码。但我发现现代浏览器和一些旧浏览器具有不同的最小超时值。我知道Zero不能是最小值。setTimeout的最小值是多少?现代浏览器和一些旧浏览器的兼容性问题?
3 回答
冉冉说
TA贡献1877条经验 获得超1个赞
我认为10将是所有浏览器中最可靠的最小值,因为我已经看到很多代码使用它。
事实上,4毫秒是由HTML5规范指定的,并且在2010年及之后发布的浏览器中是一致的。在(Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2)之前,嵌套超时的最小超时值为10 ms。
繁花不似锦
TA贡献1851条经验 获得超4个赞
setTimeout
最有可能是调用sleep
或Sleep
系统调用。
实际的机制,包括最小毫秒数,setTimeout
是专有的和/或系统相关的,因为它们不在官方的ECMA规范中。这取决于您的Javascript运行时,以及您运行它的系统。鉴于,您的Javascript运行时不会增加大量开销,最小毫秒数由操作系统和硬件的时间片分辨率决定。最小的“可睡眠”时间通常是系统的调度算法为进程分配另一个时间片所需的时间。
例如,在Windows(XP后)上,睡眠系统调用的文档显示:
值为零会导致线程将其时间片的剩余部分放弃到准备运行的任何其他线程。如果没有其他线程准备好运行,则该函数立即返回,并且线程继续执行。
这意味着,在一些非常罕见的情况下,当前没有其他进程在硬件线程上等待运行Javascript运行时进程,它可能会在调用程序完成执行后立即继续,具体取决于Javascript运行时的方式实施。你可能不会经常观察到这种情况:)
添加回答
举报
0/150
提交
取消