Javascript重复函数x次y秒

时间:2015-03-06 05:00:20

标签: javascript

我认为此问题之前一定是问过,但我找不到另一个问题。无论如何我想重复一个功能20次,每次之间重复半秒。

  for (var i = 0; i < 20; i++)
     {
            setTimeout(function(){  
                   mySwiper.update();
                   console.log("Test");}, 500);

     }

但此刻它只等了半秒钟,然后一次又重复20次。不知道怎么做。谢谢你的时间

3 个答案:

答案 0 :(得分:1)

如果你看一下你如何使用setTimeout,你将setTimeout调用20次,延迟为500,这意味着在500ms之后传递的函数将被执行20次一次每次致电setTimeout()

一种解决方案是使用计数器和setInterval()

var counter = 0,
    interval = setInterval(function () {
        mySwiper.update();
        if (++counter == 20) {
            clearInterval(interval);
        }
    })

答案 1 :(得分:1)

这有点破解,但你可以将间隔乘以索引,以给它带来同样的效果。

for (var i = 0; i < 20; i++) {
    setTimeout(function() {
        mySwiper.update();
        console.log("Test");
    }, 500 * i);
}

答案 2 :(得分:1)

您遇到的问题是因为setTimeout(和setInterval)在另一个线程上工作。你的外观很快就会结束,所以你的计时器基本上都是同时启动的。你想要做的是递归地将它们链接在一起,以便每个计时器调用下一个计时器,并保持计数。

function count(num){
    setTimeout(function(){  
        mySwiper.update();
        console.log("Test");
        if(num > 0) count(num - 1);
    }, 500);
}

然后,您只需执行

而不是循环
count(20);

作为一个注释,如果你想让它每隔一秒发射一次,无论其他所需的时间有多长,请移动使用@Arun所建议的内容。一切都完成后,我的方法需要另外500毫秒。