我有一个包含(并行)计算的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]]]
?
Future.firstCompletedOf
获取所需内容? - Randall SchulzNone
,而我不知道哪些会这样做(实际上,如果我事先知道,我就永远不会开始这个计算)。 - fommil