Scala收益率回归未来

Scala收益率回归未来,scala,Scala,我遇到了这个问题,我在Scala中使用了一个用于理解的函数来链接一些未来,然后得到一个具有这些值的类的实例。问题是我分配值的val的类型是Future[MyClass],而不是MyClass,我似乎不知道为什么 代码如下所示: val future = someService.someFutureReturningMethod() val x = for{ a <- future b <- someOtherService.someOtherFutureMethod(

我遇到了这个问题,我在Scala中使用了一个用于理解的函数来链接一些未来,然后得到一个具有这些值的类的实例。问题是我分配值的val的类型是Future[MyClass],而不是MyClass,我似乎不知道为什么

代码如下所示:

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))