2014-12-03 170 views
4

我一直在做这方面的一些研究,而且我什么都没有想出来。基本上,我正在尝试编写一个数据收集程序,该程序调用一个函数3次,每次调用之间等待10秒钟。但是,我所能找到的只是“如何在y秒内每x秒调用一次函数”,并且它不能完全解决我的问题,因为完成这三个调用可能需要超过y秒的时间。我知道我将不得不使用setInterval和clearIntervals,但我不知道如何去格式化我的循环。Javascript - 每x秒执行一次函数,但只执行三次函数

回答

10

使用的setInterval,并保持在每次运行一个计数器,然后,清除间隔时数量变得足够大。

(function() { 
    var c = 0; 
    var timeout = setInterval(function() { 
    //do thing 
    c++; 
    if (c > 2) { 
     clearInterval(timeout); 
    } 
    }, 10000); 
})(); 

http://codepen.io/anon/pen/bNVMQy

+2

五高同胞麦克纳利! – Pointy 2014-12-03 02:16:07

9

使用setTimeout

function callNTimes(n, time, fn) { 
    function callFn() { 
    if (--n < 0) return; 
    fn(); 
    setTimeout(callFn, time); 
    } 
    setTimeout(callFn, time); 
} 

然后你就可以使用该功能来设置计算迭代:

callNTimes(3, 10000, function() { /* whatever */ });