猿问

setTimeout的最小毫秒值是多少?

setTimeout的最小毫秒值是多少?

我想说

var minValue = 0;if ( typeof callback == 'function' ) {
    setTimeout( callback, minValue );}

当我用JavaScript实现回调函数时这个代码。

但我发现现代浏览器和一些旧浏览器

具有不同的最小超时值。

我知道Zero不能是最小值。

setTimeout的最小值是多少?

现代浏览器和一些旧浏览器的兼容性问题?


catspeake
浏览 2967回答 3
3回答

冉冉说

我认为10将是所有浏览器中最可靠的最小值,因为我已经看到很多代码使用它。但是,4毫秒是HTML5的最小值事实上,4毫秒是由HTML5规范指定的,并且在2010年及之后发布的浏览器中是一致的。在(Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2)之前,嵌套超时的最小超时值为10 ms。

幕布斯7119047

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

繁花不似锦

setTimeout最有可能是调用sleep或Sleep系统调用。实际的机制,包括最小毫秒数,setTimeout是专有的和/或系统相关的,因为它们不在官方的ECMA规范中。这取决于您的Javascript运行时,以及您运行它的系统。鉴于,您的Javascript运行时不会增加大量开销,最小毫秒数由操作系统和硬件的时间片分辨率决定。最小的“可睡眠”时间通常是系统的调度算法为进程分配另一个时间片所需的时间。例如,在Windows(XP后)上,睡眠系统调用的文档显示:值为零会导致线程将其时间片的剩余部分放弃到准备运行的任何其他线程。如果没有其他线程准备好运行,则该函数立即返回,并且线程继续执行。这意味着,在一些非常罕见的情况下,当前没有其他进程在硬件线程上等待运行Javascript运行时进程,它可能会在调用程序完成执行后立即继续,具体取决于Javascript运行时的方式实施。你可能不会经常观察到这种情况:)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答