Fla*_*der 5 resolution settimeout node.js
我遇到了分辨率问题setTimeout。当我将其设置为 50 毫秒时,它从 51 毫秒到甚至 80 毫秒不等。当我使用睡眠模块时,我能够获得像 50 \xc2\xb5s 这样的分辨率,那么setTimeout获得至少 1 毫秒的功能问题是什么?有什么办法可以解决/避免这个问题吗?睡眠的问题是,即使回调函数应该被触发,它也会延迟所有事情,它会等待...是否有其他解决方案可以延迟恰好 50 毫秒来触发某些事件?
以睡眠模块为例:
\nvar start = new Date().getTime();\nsleep.usleep(50);\nconsole.log(new Date().getTime() - start);`\nRun Code Online (Sandbox Code Playgroud)\n结果是:0。microtime 表示它是 51 到 57 \xc2\xb5s。那到底是怎么回事?
\n重要的是要注意,您的回调可能不会在精确的延迟毫秒内被调用
延迟的精度取决于代码阻塞的程度,这意味着如果您在代码的单个线程上执行大量操作,则setTimeout可能会触发大量延迟。相反,它几乎是准确的。
您可以亲自看到差异,执行此操作
var start = Date.now();
setTimeout(function() { console.log(Date.now() - start); }, 500);
for(var i=0; i<999999999; ++i){}
// 1237ms
Run Code Online (Sandbox Code Playgroud)
并注意与此的区别:
var start = Date.now();
setTimeout(function() { console.log(Date.now() - start); }, 500);
// 507ms
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3640 次 |
| 最近记录: |