Mam następujący kod wewnątrz aktoraAkka: Wyślij wiadomość do przyszłego aktora
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()
}
}
}
Nie lubię jak muszę użyć funkcji onComplete wysłać wynik z powrotem do nadawcy aktora. Chciałbym wiedzieć, czy można go przekonwertować na coś takiego:
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
}
}
Uważam, że to płynie lepiej z przyszłym łańcuchem.
Czy Twoje pierwsze podejście nie działa? –
@Alex Tak, ale fajka jest bardziej elegancka. – Luciano
W porządku. Ale mówisz ** Nie podoba mi się, jak muszę użyć funkcji onComplete, aby wysłać wynik do aktora nadawcy ** i twój kod robi dokładnie to - przesyłasz wynik z powrotem do aktora nadawcy . –