gpt4 book ai didi

scala - 在 Scala 中将 Future[Unit] 变成 Try[Unit]

转载 作者:行者123 更新时间:2023-12-02 00:55:45 25 4
gpt4 key购买 nike

我正在尝试实现一个 API 方法(AsyncWriteJournal.asyncWriteMessages – Akka 2.4 的持久性 API 的一部分),它需要我返回一个 Future[Seq[Try[Unit]] ]]。这个想法是可以执行许多操作,其中任何一个都可能单独成功或失败, future 可以用来等待所有操作的完成。即使在个别操作中出现某种类型的失败, future 本身也可以选择成功。

我正在使用的基础操作 (Rediscala) 返回 Futures 但我一直在尝试将 Seq[Future[Unit]] 转换为所需的返回类型。我可以在每个操作上使用 Promise 并将它们与 Future.sequence 捆绑在一起,但是如果 任何 操作失败,则结果 future 会失败这不是正确的行为

最佳答案

这是你想要的吗?

def transform(ops: Seq[Future[Unit]])(implicit ec: ExecutionContext): Future[Seq[Try[Unit]]] =
Future.sequence(ops.map (
_.map(Success(_)).recover {
case ex => Failure(ex)
}
))

关于scala - 在 Scala 中将 Future[Unit] 变成 Try[Unit],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35300724/

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