水晶语言中的定时器/间隔。

7

Crystal 中是否有定时器或间隔函数?

我查看了定时器、间隔和 Time 类的文档,但没有找到任何相关内容。

类似于 JavaScript 中的 setInterval()setTimeout() 之类的东西吗?


2
你可以使用这些库 https://github.com/veelenga/awesome-crystal#scheduling - Rubi Jihantoro
2个回答

8
超时可以使用 delay。请注意,这个API并没有最终确定,可能会在未来的版本中进行更改,甚至是暂时移除。

目前没有确保精确定时的间隔方法,但如果不需要精确的时间间隔,只需要一个近似值,那么很容易做到:

spawn do
  loop do
    sleep INTERVAL
    do_regular_work
  end
end

sleep # Or some other workload, when the main fiber quits so will the program and thus all other fibers.

补充说明:delay 实际上是一个 future 对象的实现,因此它可以返回一个值并且可以被取消。如果您不需要这些功能,应该使用 spawn + sleep - Johannes Müller
请注意,在0.35.0版本中已删除delay功能:https://crystal-lang.org/2020/06/09/crystal-0.35.0-released.html(背景信息:https://github.com/crystal-lang/crystal/pull/9093) - Philipp Claßen

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接