6

在 JavaScript 中,您可以执行以下操作:

setInterval(func,delay); 

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

4

2 回答 2

17

你可以做这样的事情:

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
于 2013-10-17T01:19:56.403 回答
1

我使用rufus-scheduler

scheduler = Rufus::Scheduler.new
scheduler.every '5m' do
    # Some Fancy Code Logic That Runs Every 5 Minutes
end
于 2015-11-09T01:07:36.460 回答