告诉Ruby程序等待一段时间

use*_*154 398 ruby sleep

在转到下一行代码之前,你如何告诉Ruby程序等待任意时间?

rco*_*der 641

像这样:

sleep(num_secs)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


Cli*_*ach 113

像这样使用睡眠:

sleep 2
Run Code Online (Sandbox Code Playgroud)

那会睡2秒钟.

小心提出一个论点.如果你刚跑sleep,这个过程将永远沉睡.(当你希望线程在被唤醒之前休眠时,这很有用.)

  • @anthropomorphic它指的是另一个线程调用Thread#run的时候. (4认同)
  • 等等,它会永远睡觉,还是直到它"被唤醒"?什么"醒来"甚至意味着什么? (3认同)

Var*_*arg 8

我发现until睡眠非常有用。例子:

> 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
Run Code Online (Sandbox Code Playgroud)

  • 这与“睡眠(10.秒)”相同 (4认同)

小智 7

像这样

sleep(no_of_seconds)

或者您可以传递其他可能的参数,例如:

sleep(5.seconds)

sleep(5.minutes)

sleep(5.hours)

sleep(5.days)