睡觉直到ruby中的情况属实
在某些条件成立之前,Ruby有没有更好的方法可以睡觉?
loop do sleep(1) if ready_to_go break end end
until
可以是一个语句修饰符,导致:
sleep(1) until ready_to_go
你必须在另一个线程改变ready_to_go
的线程中使用它,否则你将挂起。
while (!ready_to_go) sleep(1) end
与此类似,但是,再次,你需要一些东西切换ready_to_go
或你挂起。
你可以使用:
until (ready_to_go) sleep(1) end
但是until
那样我until
开始使用。 实际上我几乎从不使用它,更喜欢等效的(!ready_to_go)
。
您可以使用http://rubytools.github.io/waitutil/中描述的waitutil
gem,例如
require 'waitutil' WaitUtil.wait_for_condition("my_event to happen", :timeout_sec => 30, :delay_sec => 0.5) do check_if_my_event_happened end
def sleep_until(time) time.times do break if block_given? && yield sleep(1) end end
用法:
sleep_until(18){till_i_die}