一个模式的惯用Ruby模拟是什么,代表潜在的延迟异步计算,有可能订阅其完成?即.NET System.Threading.Task或 Python 3.x concurrent.futures.future.
请注意,这并不一定意味着多线程 – “未来”对象的实际执行可能会使用其他一些安排工作和获取结果的方式,而不在此范围之内.该问题严格关系到呈现给对象的用户的API.
解决方法
我不知道香草ruby,但EventMachine有
deferrables.
另外,请查看this article.
EM.run { detector = LanguageDetector.new("Sgwn i os yw google yn deall Cymraeg?") detector.callback { |lang| puts "The language was #{lang}" } detector.errback { |error| puts "Error: #{error}" } }