你好,我正在使用 JavaScript 编写一个秒表工具,有一个关于效率和开销的问题。我考虑了两种制作秒表的方式:
1. 存储开始时间并不断测量自那时起经过的毫秒数。
2. 创建一个整数,在设定的间隔内增加其值。
我想知道哪种方法最有效。此外,我不确定选项 #2 是否非常准确,如果有人对此有任何建议,那将是很棒的。
你好,我正在使用 JavaScript 编写一个秒表工具,有一个关于效率和开销的问题。我考虑了两种制作秒表的方式:
1. 存储开始时间并不断测量自那时起经过的毫秒数。
2. 创建一个整数,在设定的间隔内增加其值。
我想知道哪种方法最有效。此外,我不确定选项 #2 是否非常准确,如果有人对此有任何建议,那将是很棒的。
像其他人所说,选择#1。如果您想要一个每秒(或每分钟或其他时间)滴答一次的时钟,您应该估计到下一个“滴答”所需的时间,以便在正确的时间后几毫秒调用setTimeout,例如在下一个整秒之后运行:
var d = new Date();
var interval = 1020 - d.getMilliseconds();
setTimeout(fn, interval);
这样,如果一个调用的执行由于系统繁忙而延迟,下一个调用应该仍会在下一整秒之后约20毫秒被调用。
performance.now()
在现代浏览器中可用。https://developer.mozilla.org/en-US/docs/Web/API/Performance/now - Aaron Hudon