如何告诉Ruby程序在继续下一行代码之前等待任意数量的时间?


当前回答

像这样使用睡眠:

sleep 2

它会休眠2秒。

提出论点时要小心。如果只是运行sleep,进程将永远处于休眠状态。(当你想让线程休眠直到被唤醒时,这很有用。)

其他回答

像这样

睡眠(no_of_seconds)

或者你可以传递其他可能的参数,比如:

睡眠(5.秒)

睡眠(5.分钟)

睡眠(5.小时)

睡眠(5.天)

是这样的:

sleep(num_secs)

num_secs值可以是整数或浮点数。

同样,如果你在Rails应用程序中编写这个,或者在你的项目中包含了ActiveSupport库,你可以使用以下方便的语法构造更长的间隔:

sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second

像这样使用睡眠:

sleep 2

它会休眠2秒。

提出论点时要小心。如果只是运行sleep,进程将永远处于休眠状态。(当你想让线程休眠直到被唤醒时,这很有用。)

我发现直到对睡眠很有用。例子:

> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
> # or
> sleep 2 and puts 'still sleeping' until Time.now > time + 10
> # or
> sleep 1.seconds until !req.loading # suggested by ohsully

这是一个在sidekiq中使用sleep的例子

require 'sidekiq'

class PlainOldRuby
  include Sidekiq::Worker

  def perform(how_hard="super hard", how_long=10)
    sleep how_long
    puts "Workin' #{how_hard}"
  end
end

睡10秒钟,然后打印出“工作非常努力”。