如何在 Scala 中获得组合未来的结果

How to get both result in composed future in scala

我有两个功能

f1() => Future[T] 
f2(t: T) => Future[T1]

我可以通过

获得T1
f1().flatMap(t => f2(t))

但是我想同时获取T和T1,比如(T, T1),我该怎么办呢

可以在flatMap中映射f2的结果:

f1().flatMap(t => f2(t).map((t, _)))

或使用理解:

for {
  t <- f1()
  t1 <- f2(t)
} yield (t, t1)

或者,您可以将两个期货压缩到一个 returns 一个元组:

val a = f1()
val b = a.flatMap(f2)
val c = a zip b