Ho il seguente codice all'interno di un attoreAkka: Invia un messaggio futuro ad un attore
def receive = {
case All() => {
val collection: BSONCollection = db("ping")
val future:Future[List[Ping]] = collection.find(BSONDocument()).cursor[Ping].toList()
val zender = sender
future onComplete {
case Success(list) => zender ! list
case Failure(throwable) => zender ! List()
}
}
}
non mi piace come devo usare la funzione onComplete per inviare il risultato di nuovo l'attore mittente. Mi piacerebbe sapere se è possibile convertirla in qualcosa di simile:
def receive = {
case All() => {
val collection: BSONCollection = db("ping")
val future:Future[List[Ping]] = collection.find(BSONDocument()).cursor[Ping].toList()
"sender ! future" // one option
"future.map(list => sender ! list)" //Another option. I know it's not map, but maybe another function
}
}
ritengo che questo scorre meglio con il futuro concatenamento.
non funziona il primo approccio? –
@Alex Sì, ma la pipa è molto più elegante. – Luciano
OK. Ma stai dicendo ** Non mi piace come devo usare la funzione onComplete per inviare il risultato al mittente. ** e il tuo codice fa esattamente questo - stai inviando il risultato al mittente . –