我有一个results: List[Future[Option[T]]]
包含(并行)计算的。
我想尽快获得第一个非None
结果,或者None
如果所有计算都返回则返回None
。
目前,我正在这样做(我认为这很丑陋)来处理Future.find
没有找到任何结果的情况。
Future.find(results)(r => r.isDefined) map {
case Some(hit) => hit
case _ => None
}
这会给我一个Future[Option[T]]
(我想要的)。
是否有更清洁的方法来获得Future[Option[T]]
:即无需手动展平Future[Option[Option[T]]]
?