等价于ruby的setInterval()

等价于ruby的setInterval(),ruby,Ruby,在JavaScript中,您可以执行以下操作: setInterval(func,delay); 我在谷歌上找不到任何我真正想要的东西。 有没有ruby的等价物?提前谢谢 你可以这样做: Thread.new do loop do sleep delay # your code here end end 或者您可以定义一个函数: # @return [Thread] return loop thread reference def set_interval(del

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

setInterval(func,delay); 
我在谷歌上找不到任何我真正想要的东西。
有没有ruby的等价物?提前谢谢

你可以这样做:

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\u interval
时,只需调用以下任何方法:
exit
stop
kill

您可以在控制台中测试它(
irb
pry
):

我使用:


有人问了同样的问题。这个gem可能对您的调用很有帮助,但是如果您需要与JS
setInterval相同的固定时间延迟,那么
Rufus::Scheduler\interval
可能更合适
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
scheduler = Rufus::Scheduler.new
scheduler.every '5m' do
    # Some Fancy Code Logic That Runs Every 5 Minutes
end