Scala收益率回归未来
我遇到了这个问题,我在Scala中使用了一个用于理解的函数来链接一些未来,然后得到一个具有这些值的类的实例。问题是我分配值的val的类型是Future[MyClass],而不是MyClass,我似乎不知道为什么 代码如下所示:Scala收益率回归未来,scala,Scala,我遇到了这个问题,我在Scala中使用了一个用于理解的函数来链接一些未来,然后得到一个具有这些值的类的实例。问题是我分配值的val的类型是Future[MyClass],而不是MyClass,我似乎不知道为什么 代码如下所示: val future = someService.someFutureReturningMethod() val x = for{ a <- future b <- someOtherService.someOtherFutureMethod(
val future = someService.someFutureReturningMethod()
val x = for{
a <- future
b <- someOtherService.someOtherFutureMethod(a)
} yield {
MyClass(b.sth, b.sthElse)
}
val future=someService.someFutureReturningMethod()
val x=用于{
a该行为是正确的,可以用于理解,因为Future[T]了解flatMap和map方法
下面的代码
val futureA = Future.successful(1)
val futureB = Future.successful(2)
val futureC = Future.successful(3)
val x1 = for {
a <- futureA
b <- futureB
c <- futureC
} yield {
a + b + c
}
对Future.flatMap或Future.map的调用是一个Future(选项、Try、other等也是如此)
如果你想要结果,你需要等待它
Await.result(x, Duration(10, TimeUnit.SECONDS))
可能重复的
Await.result(x, Duration(10, TimeUnit.SECONDS))