我想每 10 秒迭代一次 JSON-API,如果在 JSON 数据中找到某个密钥,则使用相同的连接(保持连接)执行第二个 HTTP 请求。如果我没有放入 EM.stop
我的代码,程序在 req1.callback 中完成处理后停止等待。
如果我把它EM.stop
放进去,req2.callback
它就可以工作并且按预期进行迭代。
但是如果 JSON 文档中没有包含 key foobar
,则程序在 req1.callback 中完成处理后停止等待。
如果我EM.stop
在 req1.callback 中的最后一行添加,如果 JSON 文档具有 key ,则 req2.callback 将中止foobar
。
如果 JSON 文档有我想要的,我应该如何正确放置EM.stop
以使其迭代?
require 'eventmachine'
require 'em-http'
loop do
EM.run do
c = EM::HttpRequest.new 'http://api.example.com/'
req1 = c.get :keepalive => true
req1.callback do
document = JSON.parse req1.response
if document.has_key? foobar
req2 = c.get :path => '/data/'
req2.callback do
puts [:success, 2, req2]
puts "\n\n\n"
EM.stop
end
end
end
end
sleep 10
end