每隔几秒钟只在setInterval函数内执行一次代码

Executing code inside setInterval function only once per few seconds

本文关键字:函数 执行 代码 一次 setInterval 几秒      更新时间:2023-09-26

我正在做一个简单的项目,它是HTML和Javascript;我的计时器有问题。

我正在计算两个Date()对象之间的秒数;每两秒钟,我想得到一个新的随机数。我有一个每100毫秒运行一次的setInterval,当我超过2秒时,if语句中的代码应该会运行。

所以我的问题是:
如何确保每100毫秒运行一次的setInterval()中的if语句中的代码每2秒只执行一次?

这是代码:

var startTime = new Date();
var endTime = new Date();
var randomNumber = 0;
var gameTimer = setInterval(function(){
    //calculate seconds;
    var secondsPassed = Math.round( (endTime - startTime) / 1000 );
    if(modulo(secondsPassed,2) == 0){
        //when the "gate" is open this keep executing every 100 mili seconds.
       //but i want it to execute only once every 2 seconds.
        randomNumber = Math.floor(Math.random()*lanes.length);
        $(lanes[randomNumber]).append(box);
    }
    endTime = new Date();
}, 100);
var modulo = function (n, m) {
    var remain = n % m;
    return Math.floor(remain >= 0 ? remain : remain + m);
};

我想您要求的是双倍间隔计时器。

var interval = 100, beat = 2000, ticks = 0;
var timer = setInterval(function(){
    runsEvery100ms(); // ««« Code here runs every 100 ms.
    if (ticks > 0 && ticks % beat === 0) {
        runsEvery2000ms(); // ««« Code here runs every 2000 ms.
        ticks = 0;
    }
    ticks += interval;
}, interval);

在此处演示Fiddle