Я использую библиотеку EventMachine Ruby для асинхронного доступа к внешним API RESTful с сервера Ruby, который я пишу.Один из методов, которые я делаю доступными через мой сервер, требует доступа к нескольким внешним API и агрегирования ответов перед возвратом ответа клиенту, обращающемуся к моему серверу.Вот как я это делаю сейчас ...
def aggregate
responses = Array.new
done = 0
# clients are EM::Deferrable objects...
clients.each do |client|
client.callback do |response|
responses << response
done += 1
end
client.errback do |response|
done += 1
end
end
until done == clients.length
sleep 1
end
return responses
end
Есть ли лучшие способы справиться с такой ситуацией?Возможно ли, что класс EM :: Completion, поставляемый в версии 1.0.0 EventMachine, обеспечит сантехнику, которая лучше поддерживает такой сценарий использования?не могу найти аналогичный вопрос в StackOverflow), поэтому мне любопытно посмотреть, как другие подошли к проблеме.