在rails应用程序中,我有一个异步方法,只有在请求不同时才会异步工作。
在我的控制器中,我有这种方法:
require "em-synchrony/em-http"
def test
EventMachine.synchrony do
page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").get
render :json => {result: page.response}
request.env['async.callback'].call(response)
end
throw :async
end
在我的页面中,我将此方法称为:
//Not asynchronous. :(
//The second request takes twice more time than the first one
$.get("/test");
$.get("/test");
但是,为了使调用异步,我需要像这样的不同的请求:
//Asynchronous. :D
$.get("/test?a");
$.get("/test?b");
为什么呢? 我希望我的代码始终是异步的。即使是相同的请求。仅供我使用瘦服务器
答案 0 :(得分:1)
我发现你的问题真的很有趣,因为我要实现我的第一个基于Reactor模式的网络服务器,当然我经历了em-syncrony。
您是否尝试过使用aget
代替get
?
page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").aget
让我知道它是否有任何区别:))!