Что такое шаблон используется в Scala для решения сценария:Scala Узор: Для Понимания, что дает будущее [A]
у вас есть куча фьючерсов (они могут быть что угодно, но ради примера ...)
val aF = Future { true }
val bF = Future { Option(3) }
val cF = Future { myObject }
и у вас есть некоторая функция, которая возвращает будущее,
def fooF: Future[SomeObject]
Я хочу сделать что-то вроде:
for {
a <- aF
b <- bF
c <- cF
} yield {
if (a) {
// do stuff with b & c
fooF
} else {
Future.successful(SomeObject)
}
}
Я хочу вернуть значение Future[SomeObject]
, но я называю FOOF внутри заявления выход, я получаю Future[Future[SomeObject]]
Назначьте «внутреннее» Будущее в использовании для использования '<-' перед урожаем. Попытайтесь реорганизовать с помощью вложенного flatMap, чтобы понять. – cchantep
@cchantep не будет запускать будущее, прежде чем я его использую? Я не хочу, чтобы будущее начинало исполнять, пока я его не назову ... что может быть никогда. –
. Вы должны больше узнать о понимании/flatMap/Future – cchantep