Javascript每x次迭代在循环中运行一个函数

Javascript每x次迭代在循环中运行一个函数,javascript,Javascript,我有一个未知值的变量,它将是一个整数。为此,让我们假设var a=3 我有一个连续调用的函数: var a = 3; function anim() { left = parseInt(galleryInner.css('left'), 10); if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){ galleryInner.css('left', 0

我有一个未知值的变量,它将是一个整数。为此,让我们假设
var a=3

我有一个连续调用的函数:

var a = 3;
function anim() {
        left = parseInt(galleryInner.css('left'), 10);   
        if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){
            galleryInner.css('left', 0);
        }
        galleryInner.animate({left: '-=20' }, 200, anim);

        that.appendEnd();
}
我只希望每3次运行一次这个.appendEnd(),因为
a==3


如何执行此操作?

实例化每次调用anim()时递增的计数器变量。什么时候

counter % a === 0

然后运行这个.appendEnd()

首先需要一个递增变量来计算函数被调用的次数。例如,使用以下命令启动函数:

var me = arguments.callee;
me.timesCalled = (me.timesCalled || 0)+1;
现在,你可以检查那个柜台了。要查看“每X次”发生的情况,只需检查X的模数是否为0:

if( me.timesCalled % a == 0) { /* do something */ }

就在这里

创建第二个保持当前计数的变量,然后将您只希望每三次迭代使用的调用包装起来

if(counter % a == 0) {
    //code you want called
}

您应该检查计数器是否大于0,否则您的函数
appendEnd
将在第一次启动:

if (counter > 0 && counter % a == 0) { ... }
anim.frequency = 3;
以下是完整的代码:

var appendEndExecutedTimes = 0;

function anim(){
        left = parseInt(galleryInner.css('left'), 10);   
        if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){
            galleryInner.css('left', 0);
        }
        galleryInner.animate({left: '-=20' }, 200, anim);


        if (appendEndExecutedTimes > 0 && appendEndExecutedTimes % a === 0) {
           that.appendEnd();
        }
        appendEndExecutedTimes += 1;

    }

下面是一种封装计数器的方法,但使用全局变量表示“a”:

这里有一种方法也封装了“a”变量,称之为“频率”:

然后在第一次调用anim()之前设置所需的频率值:

if (counter > 0 && counter % a == 0) { ... }
anim.frequency = 3;

在这段代码中没有看到
var a
。这段代码中,我打字太慢了。