Play Async 动作中的并行独立休息调用

Parallel independent rest calls in Play Async action

我想在 Java play Async 动作和 return CompletionStage 中进行 3 个独立的并行 rest 调用,后者呈现包含 rest 调用的所有结果的视图。

我可以使用 for Comprehension 在 Scala 中完成此操作

def index() = Action.async { implicit request: Request[AnyContent] =>
    val f1 = getRecommendations()
    val f2 = getViewedItems()
    cal f2 = getCustomer()
    val futureResults = for {
      recommendations <- f1
      viewedItems <- f2
      customer <- f3
    } yield (recommendations, viewedItems, customer)
    futureResults.map(results => Ok(views.html.readingList.render(results._1, results._2, result_3))
    )
  }

我想在 Java 播放异步操作中做类似的事情

终于有时间来解决这个问题了。我在 Java 中得到的最接近的如下:

    public CompletionStage<Result> index() {
    CompletableFuture<List<Item>> recommendationsCF = getRecommendations();
    CompletableFuture<List<Item>> viewedItemsCF = getViewedItems();
    CompletableFuture<List<Customer>> customerCF = getCustomer();   

  return  CompletableFuture.allOf(recommendationsCF,viewedItemsCF,customerCF).thenApply((voidcf) -> ok(
            views.html.home.render(
                    recommendationsCF.join(),
                    viewedItemsCF.join(),
                    customerCF.join())
    ));