2017-01-13 140 views

回答

2

你提的問題是含糊的意義上,目前還不清楚是否要調用的函數五次每個區間,或間隔調用它,直到它被調用了五次

5倍每個時間間隔

您可以輕鬆地寫出這種高階函數:

function multi_repeat(f,dmsec,times) { 
    function foo() { 
     setTimeout(foo,dmsec); 
     for(var i = 0; i < times; i++) { 
      f(); 
     } 
    } 
    setTimeout(foo,dmsec); 
} 

現在,如果你的函數是:

function the_alert() { 
    alert("Hi"); 
} 

您可以運行此附:

multi_repeat(the_alert,4000,5); 

其中4000是毫秒數(因此4秒是4000毫秒)和5函數應該被調用的次數。

停止 5後調用

在情況下的程序,應在5個呼叫停止,可以定義另一個高階函數:

function repeat_stop(f,dmsec,times) { 
    var count = 0; 
    function foo() { 
     f(); 
     count++; 
     if(count < times) { 
      setTimeout(foo,dmsec); 
     } 
    } 
    setTimeout(foo,dmsec); 
} 
-1

setInterval將與之間的定製延遲重複運行功能他們。要運行五次,您必須自己處理,例如

setInterval(function(){ 
    for (var i = 0; i < 5; i++){ 
    myFunction(); 
    } 
},4000); 

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

+0

你沒有清除函數繼續執行的時間間隔,並且浪費了cpu時間...每4秒 –

+0

@AdrianBratu:這個問題對於每次調用5次還是5次後停止。 –

+1

根據以下問題:「每4秒運行一次的功能」 – nvioli

0

您正在尋找在setInverval功能。

var counter = 0; 
function someFunction(){ 
    console.log('hello world') 
} 

var interVal = setInterval(function(){ 
    conter++; 
    if (counter < 5) { 
     someFunction(); 
    } 
    else { 
     clearInterval(interVal); 
    } 
}, 4000); 
+0

不應該更新'counter'嗎?現在它永遠不會達到'5'。 –

+1

正確我將添加計數器++並更新 –