Я пытаюсь связать Futures в Scala, но это дает мне неправильный тип возврата.Chain Scala Futures return type
У меня есть следующие методы:
def getOneRecordByModel(x:DirectFlight): Future[Option[FlightByDetailModel]] = {
select.allowFiltering().where(_.from eqs x.from).and(_.to eqs x.to).and(_.departure eqs x.departure).and(_.arrival eqs x.arrival).and(_.carrier eqs x.airline).and(_.code eqs x.flightCode).one()
}
def getRecordByUUID(x:FlightByDetailModel): Future[Option[FlightByUUIDModel]] = {
select.allowFiltering().where(_.uuid eqs x.uuid).one()
}
def getUUIDRecordByModel(x:DirectFlight): Future[Option[FlightByUUIDModel]] = {
getOneRecordByModel(x) andThen {
case Success(Some(flight)) => getRecordByUUID(flight)
case Success(x) => Success(x)
case Failure(x) => Failure(x)
}
}
Но теперь я получаю ошибку, что тип getUUIDRecordByModel
возвращения Future[Option[FlightByDetailModel]]
Как приковать их правильно?
Когда вы используете, и затем вы не меняете тип возврата. Вы хотите flatMap или карту в зависимости от типа возврата другого метода. – monkjack
Комбинатор 'andThen' предназначен исключительно для побочного эффекта. Он всегда возвращает «Будущее», к которому он обращается, без изменений. Как упоминалось другими, 'map' и/или' flatMap' должны быть тем, что вы ищете. – cmbaxter