rubin的setInterval()等价物

时间:2013-10-17 00:52:10

标签: ruby

在JavaScript中,你可以这样做:

setInterval(func,delay); 

我似乎无法在谷歌上找到我正在寻找的东西。 这有红宝石的等价物吗?提前致谢。

2 个答案:

答案 0 :(得分:14)

你可以做类似的事情:

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

答案 1 :(得分:0)

我使用rufus-scheduler

while