2014-12-03 167 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 */ });