gpt4 book ai didi

javascript - 如何在 JavaScript 中 1 秒内准确执行 1000 次代码

转载 作者:可可西里 更新时间:2023-11-01 01:34:00 41 4
gpt4 key购买 nike

n = 0;
var timer = setInterval(function() {
if (n == 0) {
console.log(new Date());
}
// execute some other code here
n++;
if (n == 1000) {
clearInterval(timer);
console.log(new Date());
}
}, 1);

此代码执行大约需要 3-4 秒,具体取决于机器和浏览器。如何让它在 1 秒内执行?

最佳答案

浏览器中的 Javascript 计时器不准确(C 语言更适合这种用法)。

但是,如果延迟尽可能高,您会获得更好的平均准确度,尤其是避免低值,例如 1 毫秒。

很难在一秒钟内对一个函数进行 1000 次均匀定时调用。一毫秒是一个低值,触发函数本身的简单执行(加上处理计时器的开销)可能需要接近 1 毫秒(或可能更多)的时间......这意味着 JS 解释器在 1 毫秒后调用该函数, 执行代码然后设置一个新的 1ms 计时器。因此,调用之间的间隔超过 1 毫秒。

JS 解释器做类似的事情

At t   call function     <-- this takes
execute function <-- some
at t+x set new 1ms timer <-- time
etc...

但是,如果您有能力在接近 1 秒的时间范围内结束流程(而不是现在的 3-4 秒),尽可能多 1 毫秒的调用,这是可能的.

var n = 0;

var timer= setInterval(function(){
if(n++ == 0) {
console.log(new Date());
}
}, 1);

setTimeout(function() {
clearInterval(timer);
console.log("Got n="+n+" at "+(new Date()));
}, 1000);

这基本上和你的程序是一样的

  • n 每 1ms 递增
  • 然而,该过程的结束由另一个 1 秒计时器控制

在 Chrome 中,我得到 252 n 个增量,两个日期相隔约 1 秒。

关于javascript - 如何在 JavaScript 中 1 秒内准确执行 1000 次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460080/

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