1
的EM-同步文檔鏈接到this article這意味着該代碼纖維:EM-同步示例代碼無法正常運行
require 'eventmachine'
require 'fiber'
require 'em-http-request'
def http_get(url)
f = Fiber.current
http = EventMachine::HttpRequest.new(url).get
# resume fiber once http call is done
http.callback { f.resume(http) }
http.errback { f.resume(http) }
return Fiber.yield
end
EventMachine.run do
Fiber.new {
page = http_get('http://myurl')
puts "Fetched page: #{page.response}"
EventMachine.stop
}.resume
end
...相當於這個更簡單的代碼中使用EM-同步:
require 'em-synchrony'
require 'em-http-request'
EventMachine.synchrony do
page = EventMachine::HttpRequest.new("http://myurl").get
p "No callbacks! Fetched page: #{page.response}"
EventMachine.stop
end
但是運行二者會產生不同的結果。在第一種情況下,直到HTML響應返回時,光纖產生收益,而第二種似乎不等待響應而立即打印,結果打印的響應爲空。我是誤讀還是誤認,還是文章實際上暗示着錯誤的東西?
謝謝。當示例代碼未顯示正確的需求調用時,它總是激怒我。 – iftheshoefritz