Я использую EventMachine.defer
для обработки некоторых длительных процессов (неопределенное ожидание ответа от внешнего приложения). Я хочу сделать это в цикле: каждый раз, когда приложение отвечает, я обрабатываю ответ и сразу же хочу начать ждать следующего ответа.Вызов EventMachine отложить в обратном вызове?
Мой код в настоящее время выглядит следующим образом:
def watch_for_songs_change
EM.defer(
->(){ `mpc idle playlist` }, # wait for the song list to change
->(_){ update_songs; watch_for_songs_change }
)
end
я понял, что это звонит defer
изнутри обратного вызова из defer
. Действительно ли это? Я порождаю один поток изнутри другого и в конечном итоге закончим потоки? Или EventMachine вызывает обратный вызов после того, как он вернул поток в пул?
Выполняется ли плейлист 'mpc idle playlist' до тех пор, пока плейлист не будет изменен? если нет, то использование 'EM.defer' на самом деле не дает вам многого. – maniacalrobot