我试图致电persistenceService.find()
返回传递给我的方法Future[List[Scan]]
的{{1}} foreach电子邮件,该电子邮件应返回findByEmails
每次调用的Future[List[Scan]]
persistenceService.find()
1}}
目前,我有这个:
def findByEmails(emails: Set[String]): Future[List[Scan]] = {
val results: Set[Future[List[Scan]]] = emails.map(email => persistenceService.find("report.commitsStats.contributors." + email -> BSONDocument("$exists" -> true)))
}
我无法弄清楚如何合并Future[List[Scan]]
设置中的每个results
,以便我的方法返回一个Future[List[Scan]]
。
有什么想法吗?
答案 0 :(得分:2)
你可以使用Future.sequence
来组合一个期货列表,然后在列表上展平应该就足够了,代码看起来可能类似于未测试的代码:
def f(str: String): Future[List[Scan]] = ???
def g(emails: List[String]): Future[List[Scan] = {
val futures: List[Future[list[Scan]]] = emails.map(f)
val futureListList: Future[List[List[Scan]] = Future.sequence(futures)
futureListList.map(_.flatten)
}