栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js是否对setTimeout强制执行最小延迟?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js是否对setTimeout强制执行最小延迟?

它没有最小延迟,这实际上是浏览器和节点之间的兼容性问题。计时器在Javascript中是完全未指定的(这是DOM规范,它在Node中没有用,甚至浏览器也没有遵循),而node实现它们的原因仅仅是因为它们在Javascript的历史上具有多么基础,以及它们在其他方面的替代性。

Node使用libuv,libuv是跨平台的抽象层,用于较低级别的系统(例如文件系统,网络等)。计时器是其中之一,Node提供了最少的包装。在libuv级别,使用的计时器是系统特定的高精度计时器。例如,在Windows中,使用来实现此功能

QueryPerformanceFrequency
FileTimeToSystemTime
并提供以纳秒为单位的分辨率。

在Node中,如果指定

setTimeout(callback,1)
,它将在一毫秒后执行(假设系统不会因为不堪重负而延迟)。在浏览器中,最短时间为HTML5规范指定的4毫秒:https
:
//developer.mozilla.org/en/DOM/window.setTimeout。这不是保证的时间,只是最短的时间。可以预期大多数浏览器的分辨率约为15ms,这会影响DOM动画。

一个有效的信息是,在同一帧内设置为相同毫秒的超时将按照它们排队的顺序执行。如果要这样做:

  setTimeout(callback1, 1);  setTimeout(callback2, 1);  setTimeout(callback3, 1);  setTimeout(callback4, 1);

总而言之,Node应该按该顺序调用它们。仅当它们具有完全相同的解析时间时才适用。

http://msdn.microsoft.com/zh-
CN/library/windows/desktop/ms644905(v=vs.85).aspx

http://msdn.microsoft.com/zh-
CN/library/windows/desktop/ms724280(v=vs.85).aspx



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号