[英]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.