0

一个非常简单的案例,我得到了根 Fiber 错误。

require 'em-synchrony'
require 'em-synchrony/em-http'

urls = %w{http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com}
EM.synchrony do

  EM::Synchrony::Iterator.new(urls, 2).each(
      proc { |url, iter|

        EM::HttpRequest.new(url).get
        iter.next
      }
  )
end

我可以在这里使用异步,但不能使用同步 http 请求。

4

1 回答 1

2

看起来如果我要使用同步获取请求,我应该使用 FiberIterator。

require 'em-synchrony'
require 'em-synchrony/em-http'
require "em-synchrony/fiber_iterator"

urls = %w{http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com http://www.google.com}
EM.synchrony do


  EM::Synchrony::FiberIterator.new(urls, 2).each(
      proc { |url|

        EM::HttpRequest.new(url).get

      }
  )
end
于 2013-06-25T17:12:30.387 回答