Ho un futuro [T] e voglio mappare il risultato, sia in caso di successo sia in caso di fallimento.Mappa di un futuro sia per il successo sia per il fallimento
Ad esempio, qualcosa come
val future = ... // Future[T]
val mapped = future.mapAll {
case Success(a) => "OK"
case Failure(e) => "KO"
}
Se uso map
o flatmap
, sarà mappare solo successi futuri. Se utilizzo recover
, mapperà solo i futures non riusciti. onComplete
esegue una richiamata ma non restituisce un futuro modificato. Transform
funzionerà, ma prende 2 funzioni piuttosto che una funzione parziale, quindi è un po 'più brutto.
So che potrei fare un nuovo Promise
, e completa che con onComplete
o onSuccess
/onFailure
, ma speravo ci fosse qualcosa che mancava che mi avrebbe permesso di fare quanto sopra con un unico PF.
Sì, potrei facilmente scriverlo, mi chiedevo solo se qualcosa del genere fosse in agguato da qualche parte. – monkjack
Ciao @espenhw, nel secondo paragrafo della tua risposta, intendevi in realtà 'val mapped: Future [String] = future.map (_ =>" OK "). Recover {case _ =>" KO ")' –
Mi faceva impazzire non capire quale combinatore usare, specialmente dal momento che. Completo ha esattamente la firma che voglio, ma non mi dà un nuovo futuro. Userò questa soluzione; Grazie. – kornfridge