@rail-ka
Программист.

Как в Scala тип Future[String] преобразовать в String?

Добрый вечер! Я новичок в программировании по Scala. Объясните, пожалуйста, как тип Future[любой тип] преобразовать в тип без Future, или же передать уже вычисленное значение другой переменной с типом без Future?
Заранее извиняюсь, если вопрос не корректный.
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
@kondaurov
Full stack developer
Единственный способ избавиться от Future и работать непосредственно с результатом это дождаться когда этот результат будет вычислен. Используйте concurrent.Await(f: Future[Any], duration) для этого.
Внимание: Эта функция кидает исключение если Future не выполнится за duration


val f = concurrent.Future.successful("myFutureString")
val notFuture = concurrent.Await(f, 1.second)
print(notFuture)


Использовать Await не рекомендуется, делать это нужно в крайних случаях. Я использую Await тогда когда работаю с внешними Api сервисами, чтобы не заддосить запросами, а внутри своего приложения использую map.

Вышеописанный пример можно выполнить и так(рекомендуется):

val f = concurrent.Future.successful("myFutureString")
f.map(res => print(res))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы