2
同时获得结果组成的将来,我有两个功能如何在斯卡拉
f1() => Future[T]
f2(t: T) => Future[T1]
我可以
f1().flatMap(t => f2(t))
得到T1但是我想要得到T和T1,例如(T ,T1),我怎么能做到这一点
同时获得结果组成的将来,我有两个功能如何在斯卡拉
f1() => Future[T]
f2(t: T) => Future[T1]
我可以
f1().flatMap(t => f2(t))
得到T1但是我想要得到T和T1,例如(T ,T1),我怎么能做到这一点
可以f2的结果映射flatMap内:
f1().flatMap(t => f2(t).map((t, _)))
或者使用-理解:
for {
t <- f1()
t1 <- f2(t)
} yield (t, t1)
或者,您也可以压缩2个期货它返回一个元组:
val a = f1()
val b = a.flatMap(f2)
val c = a zip b