gpt4 book ai didi

Node.js setTimeout 分辨率很低且不稳定

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:19 24 4
gpt4 key购买 nike

我在解析 setTimeout 时遇到了问题。当我将它设置为 50 毫秒时,它会从 51 到 80 毫秒不等。当我使用 sleep 模块时,我可以获得 50 µs 的分辨率,那么 setTimeout 函数问题是什么以获得至少 1 ms?有什么办法可以解决/避免这种情况吗? sleep 的问题在于它会延迟所有事情,即使回调函数应该被触发,它也会等待...是否有替代解决方案来延迟恰好 50 毫秒触发某些事件?

例如 sleep 模块:

var start = new Date().getTime();
sleep.usleep(50);
console.log(new Date().getTime() - start);`

结果是:0。microtime 说它是 51 到 57 µs。那到底是什么?

最佳答案

来自setTimeout docs :

It is important to note that your callback will probably not be called in exactly delay milliseconds

延迟的精度取决于你的代码块有多少,这意味着如果你在你的代码拥有的单个线程上做很多操作,setTimeout 可能会被触发很多的延迟。相反,它几乎是准确的。

你可以自己看到区别,执行这个

var start = Date.now();
setTimeout(function() { console.log(Date.now() - start); }, 500);
for(var i=0; i<999999999; ++i){}

// 1237ms

注意这里的区别:

var start = Date.now();
setTimeout(function() { console.log(Date.now() - start); }, 500);

// 507ms

关于Node.js setTimeout 分辨率很低且不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com