В приведенном ниже коде я должен вернуть результат будущего, который вызывается после другого будущего. Я получаю следующую ошибку в строке future2.map
:Возвращение будущего будущего в игре для Scala
тип несоответствие; найдено: scala.concurrent.Future [play.api.mvc.Result] требуется: play.api.mvc.Result
Как сделать эту работу?
def method1 = Action.async { request =>
val future1 = f1
future1.map { result1 =>
val future2 = f2
future2.map { result2 =>
Ok(result1+result2+"")
}
}
}
def f1 = Future { 1 }
def f2 = Future { 2 }
подход 2 добавляет ненужный уровень сложности, окружая результат в успешной 'Future'. Хотя вы не можете этого сделать, нет абсолютно никаких оснований предпочитать этот первый. – Eric
Да, согласен. Я пытался проиллюстрировать различные способы работы «map» и «flatMap» с будущим. И 'Future.successful()' неизбежно, когда нам приходится обрабатывать несколько случаев внутри будущих вычислений, где один случай возвращает 'Future (value)' ' и другой случай возвращает значение 'значение'. – oblivion