我想创造一个类型的未来Future[(Class1,Class2,Class3)]
从下面的代码。然而,我发现做到这一点的唯一方法是使用 zip()。我发现这个解决方案很丑陋而且不是最佳的。谁能启发我。
val v = for (
a <- {
val f0:Future[Class1] = process1
val f1:Future[Class2] = process2
val f2:Future[Class3] = process3
f0.zip(f1).zip(f2).map(x => (x._1._1,x._1._2,x._2))
} yield a // Future[(Class1,Class2,Class3)]
我也尝试过使用Future.sequence(List(f0, f1, f2))
但这是行不通的,因为新的未来将具有以下类型Future[List[U]]
where U
是Class1/2/3
而我想要一个保留原始类型的三元组
val result: Future[(Class1, Class2, Class3)] = for {
_ <- Future.unit
val f1 = process1
val f2 = process2
val f3 = process3
v1 <- f1
v2 <- f2
v3 <- f3
} yield (v1, v2, v3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)