如何用javascript一秒钟做60次

pea*_*ent 0 javascript count division

我相信它涉及setinterval

我有第二个用这个

var s=today.getSeconds();
Run Code Online (Sandbox Code Playgroud)

然后使用setinterval

我有这个

setInterval(function(){ alert("Hello"); }, 3000);
Run Code Online (Sandbox Code Playgroud)

问题......我不认为我可以将第二个除以60并使用"异步"我认为我正在使用该单词,一个秒单位分为60次,每1/60增量发生一些事情

我想知道我是否应该/必须使用毫秒,因为这些单位存在,我可能只是使用比率或某事来相当于一秒/六十

jak*_*b.g 6

正如评论中所建议的那样,由于您每秒要求60次,这可能意味着您想要更新动画,即更改屏幕上某些DOM元素的颜色,位置,形状等.

为此,建议使用 requestAnimationFrame而不是setInterval.

而不是

setInterval(function () {
   doSomething();
}, 16)
Run Code Online (Sandbox Code Playgroud)

使用

function myFunction () {
   doSomething();
   requestAnimationFrame(myFunction);
}
requestAnimationFrame(myFunction);
Run Code Online (Sandbox Code Playgroud)

这允许浏览器执行某些优化.

来自MDN:

只要您准备好在屏幕上更新动画,就应该调用此方法.这将请求在浏览器执行下一次重绘之前调用您的动画函数.回调次数通常为每秒60次,但根据W3C建议,通常会与大多数Web浏览器中的显示刷新率相匹配.

在后台选项卡中运行时,回调率可能会降低到较低的速率.

这个名字requestAnimationFrame可能有点令人困惑,但你应该把它读作"请callback在浏览器准备好重新绘制屏幕时运行我",即你让浏览器决定确切的时间而不是自己强加它.