【发布时间】:2015-07-23 01:15:20
【问题描述】:
在 Scala 文档中,有一个示例如何选择通过使用 Promise 更快地成功的未来。
http://docs.scala-lang.org/overviews/core/futures.html#promises
def first[T](f: Future[T], g: Future[T]): Future[T] = {
val p = promise[T]
f onSuccess {
case x => p.trySuccess(x)
}
g onSuccess {
case x => p.trySuccess(x)
}
p.future
}
这个函数返回最先成功的未来,如果其中任何一个失败,它永远不会完成。
是否有可能以某种方式修改它,即使其他未来失败,如果成功则返回第二个,如果两者都成功,则像现在的代码一样选择更快的一个。
【问题讨论】: