簡體   English   中英

Scala Play framework-2.1.1 AsyncResult:處理多個期貨

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM