【问题标题】:What is an easy way to do a timer?做计时器的简单方法是什么?
【发布时间】:2012-02-21 01:01:35
【问题描述】:

我正在编写一个 Ruby 脚本并且想要这样的行为:

every 15 seconds do
  callback
end

我该怎么做?

快速搜索并没有显示很多库;我应该使用线程吗?我想要这个非常基本的,因为我的 Ruby 脚本将是基本的。

【问题讨论】:

    标签: ruby asynchronous timer timeout


    【解决方案1】:

    您可以随时拨打sleep:

    loop do
      sleep 15
      callback
    end
    

    【讨论】:

    • 希望我不必这样做,但我想这似乎是要走的路。所以解决方案是创建一个单独的线程来运行回调并在我需要该任务时启动线程。太棒了,谢谢!
    • 您的用例具体是什么?如果这是一个不需要并行执行任何操作的同步脚本,调用 sleep 应该没问题。否则,您可以尝试其他方法。 EventMachine 是一个(正如 Ryan 在另一个答案中提到的那样);您还可以尝试重构脚本以在简单的loop 中运行并手动检查Time.now
    【解决方案2】:

    您还可以查看 EventMachine 的 PeriodicTimer 类。我过去曾成功使用过它:http://eventmachine.rubyforge.org/EventMachine/PeriodicTimer.html

    不过,EventMachine 可能无法满足您的需求。

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多