![]() |
1
200
因为你正在使用
使用
对于一个简单的计时器或时钟,记录时间 差别 明确地:
现在,这就有了可能跳跃的问题。当间隔延迟一点并在之后执行回调时
然而,有时你真的需要一个稳定的时间间隔来执行回调,而不会出现漂移。这需要更高级的策略(和代码),尽管它的回报很好(并且记录的超时更少)。这些被称为 自我调节 计时器。这里,与预期间隔相比,每个重复超时的精确延迟适用于实际经过的时间:
|
![]() |
2
30
我只是建立在
Bergi's answer
(特别是第二部分)有一点,因为我真的很喜欢它的工作方式,但我想在计时器启动后停止它(比如
1.建造师好的,那么你复制/粘贴。。。
2.实例化告诉它该怎么做。。。
3.那就。。。东西
我的意思是,不管怎样,这对我来说很有效。如果有更好的办法,让我知道。 |
![]() |
3
14
Bergi
的答案准确地指出了问题中计时器不准确的原因。下面是我对一个简单的JS定时器的看法
这个片段还包含了一个解决问题的方法。所以不是递增
*-比1000毫秒更精确 为了让你的计时器更准确,你必须四舍五入 |
![]() |
4
13
这里答案中的大多数计时器都会延迟预期时间,因为它们将“预期”值设置为理想值,并且只考虑浏览器在该点之前引入的延迟。如果你只需要精确的时间间隔,这很好,但是如果你是相对于其他事件计时的,那么你(几乎)总是会有这种延迟。 要纠正它,可以跟踪漂移历史,并使用它预测未来的漂移。通过使用这种先发制人的修正添加二次调整,漂移的变化围绕着目标时间。例如,如果你总是得到20到40毫秒的漂移,这个调整会在目标时间附近将其移动到-10到+10毫秒。 建立在 Bergi's answer ,我的预测算法使用了滚动中值。用这种方法只取10个样本,差别是合理的。
|
![]() |
5
7
我同意Bergi使用Date,但他的解决方案对我来说有点过头了。我只是想让我的动画时钟(数字和模拟SVG)在第二次更新,而不是在时钟更新中产生明显的跳跃。以下是我在时钟更新函数中输入的代码片段:
它只计算下一个偶数秒的增量时间,并将超时设置为该增量。这会将我所有的时钟对象同步到秒。希望这有帮助。 |
![]() |
6
3
这里有一个解决方案,当窗口被隐藏时会暂停,并且可以通过中止控制器取消。
用法:
|
![]() |
7
1
这是一个老问题,但我想分享一些我有时使用的代码:
例子:
自我修正
编辑:注意,这不会做任何输入检查(比如延迟和重复是否是正确的类型)。如果想要获得计数或更改重复值,可能需要添加某种get/set函数。 |
![]() |
8
1
灵感来自 Bergi's answer 我创建了以下完整的非漂移计时器。我想要的是一种设置计时器的方法,停止它,然后简单地完成。
|
![]() |
9
1
这里的许多答案都很好,但它们的代码示例通常是一页又一页的代码(好的答案甚至有关于复制/粘贴所有代码的最佳方式的说明)。我只是想用一个非常简单的例子来理解这个问题。 工作演示
演示说明
我们只需要这两个变量:我们的总数和上次停止计时器的时间。其他答案似乎使用了这种方法,但我想要一个简洁的解释。 |
![]() |
10
0
没有比这更准确的了。
至于为什么不准确,我猜机器正在忙于做其他事情,每次迭代加起来都会稍微慢一点,如你所见。 |
![]() |
11
0
下面是我最简单的实现之一。它甚至可以在页面重新加载后继续使用- 代码笔: https://codepen.io/shivabhusal/pen/abvmgaV
|
![]() |
12
0
driftless 是降低漂移的setInterval替代品。让生活变得简单,导入npm包,然后像setInterval/setTimeout那样使用它:
|
![]() |
13
0
您可以使用一个名为setTimeout的函数来设置倒计时。 首先,创建一个javascript代码片段并将其添加到页面中,如下所示:;
来源+更多详细信息-> https://www.growthsnippets.com/30-second-countdown-timer-javascript/ |
![]() |
14
0
现代的、完全可编程的定时器该计时器采用赫兹频率,以及一个最多可以使用四个参数的回调、当前帧索引、当前时间、当前帧理想出现的时间,以及对计时器实例的引用(因此调用方和回调方都可以访问其方法)。
注:所有时间均基于
计时器实例有三种API方法:
注:该
|
![]() |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
![]() |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
![]() |
Prince · 复制大型文件需要更多时间 2 年前 |
![]() |
Sagar · 为什么在循环之外声明变量会更快? 2 年前 |
![]() |
seco · 如何在不挂起页面的情况下加载JS 2 年前 |