gpt4 book ai didi

scala - 在 Scala 中顺序组合任意数量的 future

转载 作者:行者123 更新时间:2023-12-02 02:02:23 30 4
gpt4 key购买 nike

我是 scala 新手,我尝试在 scala 2.10RC3 中组合多个 Future。 Futures 应按顺序执行。在文档中Scala SIP14定义方法 andThen 是为了按顺序执行 Futures。我使用此方法组合了多个 Futures (请参见下面的示例)。我的期望是它打印 6 但实际上结果是 0。我在这里做错了什么?我有两个问题:

首先,为什么结果是0。其次,如何组合多个 Future,以便在第一个 Future 完成之前不会开始执行第二个 Future

val intList = List(1, 2, 3)

val sumOfIntFuture = intList.foldLeft(Future { 0 }) {
case (future, i) => future andThen {
case Success(result) => result + i
case Failure(e) => println(e)
}
}

sumOfIntFuture onSuccess { case x => println(x) }

最佳答案

andThen 用于副作用。它允许您指定 future 完成后和用于其他操作之前要执行的一些操作。

使用 map :

scala> List(1, 2, 3).foldLeft(Future { 0 }) {
| case (future, i) => future map { _ + i }
| } onSuccess { case x => println(x) }
6

关于scala - 在 Scala 中顺序组合任意数量的 future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836725/

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