[英]Scala Play framework-2.1.1 AsyncResult: Handling multiple futures
我需要根据用户发布的数据生成各种代码段,因此这些代码段的生成可以是并行的,我正在尝试对每个代码段和片段的生成使用期货,并将它们组合并发送AsyncResult,这是代码
val p = for {
pr <- Future { ProviderGenerator.generate(content) }
c <- Future { ModelGenerator.generate(content) }
} yield(pr, c)
Async {
if (p.isCompleted)
println("Futures completed")
p.onSuccess({
case (pr: ActionResult, c: ActionResult) => {
response.add(pr)
response.add(c)
Ok(Json.toJson(response))
}
})
p onFailure {
case _ => println("It failed")
}
p.map {
case (pr: ActionResult, c: ActionResult) => {
println("I am in case")
response.add(pr)
response.add(c)
Ok(Json.toJson(response))
}
case _ => {
println("I am in else case")
Ok(Json.toJson(response))
}
}
}
这永远不会向用户发送结果,就好像我在其中使用单个未来一样,我正在得到响应。 我如何处理这样的多种期货?
我没有看到明显的问题-尝试添加一个p onFailure { case e: Throwable => Logger.error("failed", e) }
并查看它是否显示一个未来未完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.