Параллельные независимые вызовы отдыха в действии Play Async - PullRequest
0 голосов
/ 21 мая 2019

Я хотел бы сделать 3 независимых параллельных вызова покоя в асинхронном действии воспроизведения Java и вернуть CompletionStage, который отображает представление со всеми результатами вызовов покоя.

Я могу выполнить это в 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 Play Async action

1 Ответ

0 голосов
/ 14 июля 2019

Наконец-то есть время поработать над этим.Самое близкое, что у меня есть на 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())
    ));
...