我无法理解为什么这段代码不起作用。 我正在尝试做的是使用模拟同步代码行为 纤维 </跨度> 。
要求’ 纤维 </跨度> “需要’eventmachine’
def async_request(url ) f = Fiber.current Thread.new做 睡0.3 把’恢复’ 纤维 </跨度> “ f.resume(‘page fetched#{url}’) 结束结束
def async_get(url) async_request url val = Fiber.yield 返回val结束
require 'fiber' require 'eventmachine' def async_request(url) f = Fiber.current EM.add_timer(0.3) do puts 'Resuming Fiber' f.resume("page fetched #{url}") end end def async_get(url) async_request url Fiber.yield end EM.run do Fiber.new do puts 'Fiber Started' page = async_get('http://www.whatever.com') puts page EM.stop end.resume end
你会得到
#=> Fiber Started #=> Resuming Fiber #=> page fetched http://www.whatever.com