2
を実装するためにどのように私はこの方法持っ先物組成
def findUserById(ids: Seq[String]): Future[Seq[User]]
をしかし、私は先物を使ってといくつかの問題を抱えています。先物組成を正しく実装するにはどうすればよいですか?
私は実装(テストされていません)を持っていますが、もっと簡単にできると思います。あなたがflatten
でsequence
+ traverse
とmap
、およびfilter
+ map
を置き換えることができます
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
}
秒後期:D – thwiegan
「この実装のパフォーマンス」についても説明できますか?この場合の「将来の仕組み」についての簡単な説明は非常に役立ちます。 – oblivion
@oblivion申し訳ありませんが、私はあなたがパフォーマンスと将来の仕組みについて知りたいことを理解していません。パフォーマンスに関しては、これはおそらく 'Future'sでできる最も効果的なアプローチの1つです(最後の' map'を削除することも可能ですが、小さな利益のためにコードが多すぎると思います)。 – Kolmar