У меня есть Future [T], и я хочу сопоставить результат как с успехом, так и с отказом.
Например, что-то вроде
val future = ... // Future[T]
val mapped = future.mapAll {
case Success(a) => "OK"
case Failure(e) => "KO"
}
Если я использую map
или flatmap
, он отображает только фьючерсы на успех. Если я использую recover
, он отображает только несостоявшиеся фьючерсы. onComplete
выполняет обратный вызов, но не возвращает измененное будущее. Transform
будет работать, но он принимает 2 функции, а не частичную функцию, поэтому немного уродливее.
Я знаю, что могу создать новый Promise
, и завершить это с помощью onComplete
или onSuccess
/onFailure
, но я надеялся, что что-то у меня пропало, что позволит мне сделать это с помощью одиночный PF.