gpt4 book ai didi

scala - 如何在 Scala 中失败 Promise

转载 作者:行者123 更新时间:2023-12-03 04:16:15 25 4
gpt4 key购买 nike

在 Scala 文档中,有一个示例如何通过使用 Promise 来选择更快成功的 future。

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
}

此函数返回首先成功的 future,如果其中任何一个失败,则它永远不会完成。

是否可以修改此方法,即使其他 future 失败,如果成功,则返回第二个 future ,如果两者都成功,则像现在的代码一样选择更快的一个。

最佳答案

您可以添加以下内容:

f onFailure {
case e =>
g onFailure {
case _ =>
p.failure(e)
}
}

当两个 future 都失败时,这将使 promise 失败,并出现与 f 相同的异常。如果需要,您可以详细说明这一点,以创建一个记录来自 fg 的 2 个异常的异常。

关于scala - 如何在 Scala 中失败 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com