EventMachine и зацикливание

Вот мой код:

EventMachine.run {

    conn = EM::Protocols::HttpClient2.connect request.host, 80

    req = conn.get(request.query)
    req.callback { |response|
      p(response.status)
      p(response.headers)
      p(response.content)
    }
}

Обратные вызовы срабатывают, то есть я получаю строковые выходные данные статуса и т. д.

Но я хочу, чтобы он запускал обратные вызовы, а затем повторял. Я планирую реализовать больше логики, например, каждый раз изменять URL-адрес, но пока я просто хочу:

  1. Получить URL-адрес
  2. Активировать обратные вызовы
  3. Повторить...

Мое понимание этого шаблона заключалось в том, что все в этом цикле срабатывает, затем возвращается, затем продолжается вечно, пока я не выполню EM.stop.

Прямо сейчас он извлекает данные URL,и просто зависает.

Нужно ли мне делать какой-то возврат, чтобы продолжить здесь? Почему он зависает, а не зацикливается снова и снова?

Если я окружу весь вышеприведенный блок кода циклом do... end, он будет работать, как и ожидалось... это правильный способ реализовать это? Полагаю, я сбит с толку, так как думал, что все внутри EM.runповторяется, когда оно завершается.

5
задан Nakilon 21 July 2015 в 11:46
поделиться