Я работаю с Akka HTTP, и у меня есть клиент, который запрашивает URL-адрес. Код что-то вроде этого:Akka-http и преобразование Future [HttpResponse] в будущее [String]
def f1(): Future[HttpResponse] = { ... }
Я хочу написать f2
функцию, которая принимает HttpRespons
е, но превращает его в Future[String]
где String
есть тело сообщения. Я ищу:
def f2(): Future[String] = f1().map(...)
Мне не удалось это скорректировать, чтобы правильно работать.
Вопрос №1: Я думаю, что это более важный вопрос Скалы. Как я буду преобразовывать это будущее? Лучшее, что я могу получить это:
def f2:Future[String] = {
f1().map (_.entity.toStrict(300.milli).map(_.data.utf8String))
}
, который не работает, так как я в конечном итоге с Future[Future[String]]
Вопрос # 2: Это Акка-клиента вопрос для моего понимания.
f1().map(_.toStrict())
imply f1().map(_.entity.toStrict())
?
Если да, то каким образом я могу получить доступ к объекту без необходимости также называть toStrict?
Используйте 'flatMap' вместо' map', когда результат функции, переданной 'map', возвращает' Future'. –
Не могли бы вы объяснить, почему вы хотите преобразовать его в String и для чего вы его будете использовать? –