请教一下,node有没有毫秒级的定时器?
发布于 3 年前 作者 wldlzt 3051 次浏览 来自 问答

目前找到的几个定时组件包括node-schedule都只是到秒级,有哪位朋友知道有毫秒级的吗?

6 回复

毫秒级的,可能不准确,因为运行一段代码可能就很多毫秒(一次数据库读写就更长了、一个 http 请求可能好几秒)
这样,定时器的误差就非常大
你的具体需求是什么

会有误差,具体原因如下: setTimeout倒计时为什么会出现误差? 首先,js是单线程,同一时间只能做一件事情。如果前面一个任务执行时间很长(比如网络请求),后面就必须的等待很长时间。为了解决这个问题,js分为同步任务和异步任务。js会先执行同步任务,执行完后,才会去执行异步任务,异步任务一般放在异步队列中。也就是执行完同步任务后,会不断从异步队列中取出要执行的任务放在主栈中执行,这个过程就称为"event-loop"。 异步队列分为宏任务队列和微任务队列, 宏任务队列包括:

setTimeout, setInterval, setImmediate

微任务队列包括:

promise, async/await

微任务队列执行顺序大于宏任务队列。

所以,setTimeout出现误差是因为:

要先执行同步任务,才会执行异步任务; 异步任务中,微任务执行顺序大于宏任务执行顺序。 来自;https://github.com/YvetteLau/Step-By-Step/issues/21#issuecomment-499396674

@daGaiGuanYu 想做一个服务器时间的校对,需求不是很迫切,就是想多个服务器可以设置一致的时间点,哪怕时间与标准有出入也没关系,关键是多个服务器的时间能一致

@gocpplua 谢谢~~~目前一番了解下来,确实有点难实现,总会有偏差

@chenkai0520 非常感谢,我来研究一下

回到顶部