在javascript函数中有可能有一个可变的间隔吗?

7xzttuei  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(156)

我一直尝试设置一种方法来改变值递增1时使用的间隔,但没有成功。它被设置为每9秒递增一次,但我希望计数器看起来不那么机械,而是通过重复的数字变化来递增,例如,3秒、7秒、12秒、10秒和13秒(五个数字加起来为45,以确保保持平均9秒)。
我试着把这些数字放入一个数组中,并通过它们循环'interval'的值,但我现在意识到,一旦函数启动,值就不能在函数的上下文中更改。
会非常感激这里的任何建议。谢谢!
更多“机器人”计数的当前代码:

let interval = 9000;
let shiftCounter = {{ row.total }};

window.setInterval(function () {
  document.getElementById("shiftsCreated").innerHTML = shiftCounter.toLocaleString('en');
  shiftCounter = shiftCounter + 1;
}, interval);
dsekswqp

dsekswqp1#

您可以改用setTimeout,每次它完成时,通过选择随机延迟或任何您想要的顺序来调用新的超时。

let counter = 0;
const intervals = [3, 7, 10, 12]

increment(0);

function increment(timeout) {
    setTimeout(() => {
        console.log(`Counter: ${counter}.`)
        counter++;
        increment(intervals[Math.floor(Math.random() * intervals.length)] * 1000)
    }, timeout);
}

相关问题