rubin的setInterval()等价物

ana*_*kin 6 ruby

在JavaScript中,您可以:

setInterval(func,delay); 
Run Code Online (Sandbox Code Playgroud)

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

Thi*_*win 15

你可以做类似的事情:

Thread.new do
  loop do 
    sleep delay
    # your code here
  end
end
Run Code Online (Sandbox Code Playgroud)

或者您可以定义一个函数:

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

当你想停止set_interval,你只需要调用任一方法:exit,stopkill.

您可以将其测试到控制台(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
Run Code Online (Sandbox Code Playgroud)