【问题标题】:setInterval incrementally faster [duplicate]setInterval 越来越快[重复]
【发布时间】:2018-02-05 18:43:24
【问题描述】:

给定一个 setInterval,它的计时器是否可以越来越快? 比如要运行的代码从 2 秒开始,然后是 1.9 秒、1.8 秒、1.7 秒等......? (此时我并不担心达到零或负数。)

我目前有:

let speed = 2000;

let timer = setInterval(function() {
 display();
 faster();
 console.log(speed)
}, speed);

function faster() {
 speed -= 100;
}

function display(){
 // displays another square on canvas
}

我问是否有可能,因为 console.log 显示速度确实降低了,但显示函数并没有以更快的间隔被调用;它总是每 2 秒被调用一次。因此 setInterval 的速度并没有变快....

【问题讨论】:

  • 您是否尝试过使用setTimeout 而不是setInterval 并从计时器回调方法中调用timer
  • 不,您不能更改运行间隔的间隔计时器。你必须清除当前的并开始一个新的 - 或者使用 setTimeout 开始,如果你想在任何给定的时间间隔内只执行一次。

标签: javascript time setinterval


【解决方案1】:

没有。 setInterval() 速率在定时器启动时固定为第二个参数的值。

您可以改用setTimeout(),在每次调用回调时重新建立计时器:

var rate = 100;
setTimeout(function callback() {
  // do something
  setTimeout(callback, rate - 10);
});

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多