【发布时间】:2019-07-01 06:19:58
【问题描述】:
我在 Scala 中有一段代码,我在主块中使用Await.ready,然后使用相应的值。
import scala.concurrent.{Future, Await}
import scala.concurrent.duration.Duration
import scala.concurrent.ExecutionContext.Implicits.global
import concurrent.Promise
val a = Future[Int] {
Thread.sleep(100)
4+6
}
val b = Future[Int] {
12
}
val r1= Await.ready(a,Duration.Inf)
val r2=Await.ready(b,Duration.Inf)
println("a = " + a)
println("b = " + b)
val k = b.flatMap(x => {a.map(y => x+y)})
println("k = " + k)
这会导致
a = Future(Success(10))
b = Future(Success(12))
k = Future(<not completed>)
为什么不计算k?
【问题讨论】: