2013-10-17 150 views
3

在JavaScript中,你可以做。 是否有與此等價的紅寶石?提前致謝。的setInterval()等效紅寶石

+0

http://stackoverflow.com/questions/13791964/how-do-i -make-a-ruby-script-run-once-a-second具有相同的問題。 這個gem [when](https://github.com/javan/whenever)可能會幫助你 – addicted20015

回答

11

你可以做類似的東西:

Thread.new do 
    loop do 
    sleep delay 
    # your code here 
    end 
end 

或者你可以定義一個函數:

# @return [Thread] return loop thread reference 
def set_interval(delay) 
    Thread.new do 
    loop do 
     sleep delay 
     yield # call passed block 
    end 
    end 
end 

當你想停止set_interval,您只需撥打任一方法:exitstopkill

您可以測試它到控制檯(irbpry):

t1 = Time.now; t = set_interval(2.5) {puts Time.now - t1} 
> 2.500325 
> 5.000641 
> 7.500924 
... 
t.kill # stop the set_interval function 
0

我用rufus-scheduler

scheduler.every '5m' do 
    # Some Fancy Code Logic That Runs Every 5 Minutes 
end