3

我想运行一个块 60 秒。到目前为止,我想出的东西并没有如愿突破。

@start_time = Time.now
stream_some_data do |x| 
  # .. do something ...
  break if Time.now == @start_time + 60
end
4

2 回答 2

9

Ruby 的 stdlib 已经为此提供了一个 Timeout 模块:

begin
  require "timeout"
  Timeout::timeout(60) do
    # all of the things...
  end
rescue Timeout::Error => e
end
于 2012-05-27T07:01:17.760 回答
3

由于您不太可能在开始后正好60 秒到达那条线,请尝试:

break if Time.now > @start_time + 60
于 2012-05-27T06:39:47.767 回答