2017-01-13 100 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

正确我将添加计数器++并更新 –