У меня есть приложение на основе актера (с использованием akka), написанное на scala. Теперь у меня есть актер, который должен настроить устройство в сети, отправив ему различные HTTP-запросы в предопределенном порядке.Последовательность действий чистый код
Я инкапсулировал все материалы HTTP в отдельный класс для доступа моих участников. Каждый из этапов настройки может, конечно, сбой, поэтому я использовал Try[Int]
как возвращаемый тип методов, которые обрабатывают связь с устройством (возврат HTTP-responseecode как содержимого Try
).
Теперь моя проблема в том, что каждый шаг конфигурации зависит от всех шагов, прежде чем они будут успешно завершены, и поэтому мой код становится трудно читаемым (в моем оппионе).
Я его реализовать в основном как этот
action1 match {
case Failure(err) => //report error
case Success(retCode) if retCode < 400 =>
nextStep match {
...
}
}
После нескольких действий это просто становится массивное заявление, в котором вы видите cannont на первый взгляд, что происходит.
Итак, как я мог бы написать это в чистом виде кода?
Ahh right 'find' останавливается, если он получил« true ». Ну, с задним числом это было своеобразное решение ^^ – mgttlinger
Не имеет значения, если он блокируется здесь, поскольку цель этого актера состоит в том, чтобы выполнить эти действия, и они должны ждать друг друга в любом случае – mgttlinger
@mgttlinger: я не знаете, как вы получаете ответы 'HTTP', но если библиотека предоставляет' Future [Response] ', вы не должны преобразовывать ее в' Try', используя 'Await'. – senia