我想每 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