2014-05-04 58 views
0

函數調用這是我的代碼使一些空間之間在JavaScript

function func(){ 
console.log('run') 
} 

for(var i=0;i<1000;i++) 
func() 

我希望我的函數運行1000次,但調用之間間隔1秒。 我正在尋找一個幫助函數,強制函數在x毫秒內不會被調用超過1次。

我在下劃線搜索,沒有找到。 像

func=_.interval(func,1000) 

_.throttle沒有幫助我。如果我將使用_.throttle,我的「func」將不會執行1000次。

謝謝。

+3

爲什麼你不希望使用的setTimeout或setInterval的?如果你發現一個像_.interval這樣的函數,你是否檢查過它沒有使用setTimeout/setInterval?或者你只是失敗了使用setTimeout和setInterval,現在拒絕使用它? –

+0

除了命名之外,'_.interval(func,1000)'和'setInterval(func,100)'之間的真正區別是什麼? – Sirko

+0

我想第一次執行會在1之後,第二次執行會在2之後,所以執行需要1000次,換句話說,我想要一個幫助函數,強制函數在執行中不會再執行1次x ms。但它不會忽略任何呼叫 – Aminadav

回答

0

然後創建一個輔助函數:

-.interval = function(func,ms){ 
    setTimeout(func,ms); // I didn't use setInterval because both aren't same 
} 

我不能成像,你爲什麼會想要做這樣的事情,而不使用更通用setTimeoutsetInterval

隨着上面的聲明,你不需要使用setTimeout,但你所謂的幫手函數。

+1

lol ...這正是op不想要的,我覺得這非常有趣+1 –

+0

這並不能幫助你做什麼,因爲func將會執行1000次一秒鐘!我希望第一次執行將會在1之後,第二次執行將在2之後,等等...... – Aminadav

1

還有許多其他的方式來做到這一點,這是不是最漂亮的,但是:

var tick, delay, count, interval, stop; 

count = 1000; // 1000 times 
delay= 1000; // 1s between calls 

stop = _.after(count,function() { 
    clearInterval(interval); 
}); 

tick = function() { 
    console.log('TICK'); 
    stop(); 
}; 

interval = setInterval(tick,delay);