我有一个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]]]?