为什么这个简单的Scala for comprehension不执行期货?
发布时间:2020-12-16 09:06:54 所属栏目:安全 来源:网络整理
导读:我不知道为什么这不起作用: import scala.concurrent.futureimport scala.concurrent.Futureimport scala.concurrent.ExecutionContextimport scala.concurrent.ExecutionContext.Implicits.globalobject FutureTest { def main(args: Array[String]) { val
我不知道为什么这不起作用:
import scala.concurrent.future import scala.concurrent.Future import scala.concurrent.ExecutionContext import scala.concurrent.ExecutionContext.Implicits.global object FutureTest { def main(args: Array[String]) { val result1 = future("a") val result2 = future("b") val result3 = future("c") val res = for { r1 <- result1 r2 <- result2 r3 <- result3 } yield (r1 + r2 + r3) for { r <- res} yield(println(r)) } } 我期待这个打印“abc”,但没有真正发生. 解决方法
你正在执行一个独立的程序,问题是主线程在未来完成之前终止,看看你可以使用它的东西:
import scala.concurrent.future import scala.concurrent.Future import scala.concurrent.ExecutionContext import scala.concurrent.ExecutionContext.Implicits.global object FutureTest { def main(args: Array[String]) { val result1 = future("a") val result2 = future("b") val result3 = future("c") val res = for { r1 <- result1 r2 <- result2 r3 <- result3 } yield (r1 + r2 + r3) val printing = for { r <- res} yield(println(r)) Await.ready(printing,Duration.Inf) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |