Scala futures and Await.result()



我希望以下代码会导致包含"两个字符串"的 syncResult,但是,我得到了错误 java.lang.NoClassDefFoundError: Could not initialize class

import scala.concurrent.{Await, Future}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
def randomFunction1(): Future[String] = {
    Future.successful("string one")
}
def randomFunction2(): Future[String] = {
    Future.successful("string two")
}
val asyncResult: Future[String] = for {
    r1 <- randomFunction1()
    r2 <- randomFunction2()
} yield r2
val syncResult: String = Await.result(
    asyncResult,
    1.second
)

我得到以下相似的结果。

import scala.concurrent.{Await, Future}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
def randomFunction1(): Future[String] = {
    Future.successful("string one")
}
def randomFunction2(): Future[String] = {
    Future.successful("string two")
}
val asyncResult: Future[String] = randomFunction1().flatMap(
    r1 => {
        randomFunction2()
    }
)
val syncResult: String = Await.result(
    asyncResult,
    1.second
)

我正在使用Scala 2.12.2解释器使用:paste

我的代码怎么了?

这似乎是Scala repl的问题。

最新更新