JSON-APIを10秒ごとに繰り返し、JSONデータで特定のキーが見つかった場合は、同じ接続(キープアライブ)を使用して2番目のHTTPリクエストを実行したいと思います。コードに配置しない EM.stop
と、プログラムはreq1.callbackでの処理が終了した後、待機を停止します。
私がEM.stop
中に入れるreq2.callback
と、それは機能し、期待どおりに繰り返されます。
ただし、JSONドキュメントにキーが含まれていない場合foobar
、プログラムはreq1.callbackでの処理が終了した後、待機を停止します。
EM.stop
req1.callback内の最後の行に追加すると、JSONドキュメントにキーが含まれているとreq2.callbackは中止されますfoobar
。
EM.stop
JSONドキュメントに必要なものが含まれているかどうかを繰り返すには、どのように適切に配置する必要がありますか?
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