zu implementieren habe ich eine Methode:Wie Futures Zusammensetzung
def findUserById(id: String): Future[Option[User]]
Jetzt möchte ich eine andere Methode machen, basierend darauf:
def findUserById(ids: Seq[String]): Future[Seq[User]]
Aber ich habe ein Problem mit Futures. Wie man die Futures-Zusammensetzung richtig implementiert?
Ich habe eine Implementierung (nicht getestet), aber ich denke, es kann einfacher gemacht werden. Auch ich bin nicht sicher über die Leistung dieser Umsetzung:
override def findUsersById(ids: Seq[String]): Future[Seq[User]] = {
val futures = ids.map(id => findUserById(id))
val filtered = Future.sequence(futures).map(_.filterNot(_.isEmpty)).map(_.map(_.get))
filtered
}
Sekunden zu spät: D – thwiegan
Können Sie bitte auch die "Leistung dieser Implementierung" erklären? Eine kurze Beschreibung darüber, wie Future in diesem Fall funktioniert, wäre sehr hilfreich. – oblivion
@oblivion Es tut mir leid, ich verstehe nicht, was Sie über die Leistung wissen wollen und wie Future funktioniert. Was die Performance betrifft, ist dies wahrscheinlich einer der effektivsten Ansätze, die man mit 'Future's machen kann (es ist auch möglich, die letzte' map' zu entfernen, aber ich denke, es ist zu viel Code für einen kleinen Gewinn). – Kolmar