【发布时间】:2017-02-07 07:20:22
【问题描述】:
下面的method1 尝试返回两个Future 方法someFutureMethod1 和someFutureMethod2 组合的结果。任何想法如何使这项工作?理想情况下,第一个结束的方法应该等到第二个结束,然后返回组合的未来值。
def method1 ( s: Seq[Int]): Future [(Int,Int)] = {
s.map { sx =>
val future = someFutureMethod1 (sx)
future.map {
result => result
}
val future2 = someFutureMethod2 (sx)
future2.map {
result2 => result2
}
(result,result2) // <-- the method should return the two results in the future
}
}
def someFutureMethod1 (i: Int) = Future {
i + 1
}
def someFutureMethod2 (i: Int) = Future {
i + 2
}
【问题讨论】:
-
将期货与 zip 结合起来非常容易:
future.zip(future2)。但您也映射到 Seq。所以看起来你应该返回一个这样的 Future 的 Seq,对吧? -
不,它应该返回一对 Ints
-
但是 Seq 上的 map 返回另一个 Seq。那么您希望如何组合 Future 以仅返回一个 Future?
-
我的错,你应该返回一个 Seq
-
那看我的回答。
标签: scala