Play framework подождать выполнение нескольких задач (CompletableFuture.allOf)

133
07 июня 2018, 10:10

Разбираюсь с фреймворком play. Необходимо сделать несколько запросов в БД, и по результатам их выполнения сделать бизнес логику.

Слой Repository возвращает CompletionStage

    public CompletionStage<Account> get(Long id) {
        return supplyAsync(() -> wrap(em -> Failsafe.with(circuitBreaker).get(() -> lookup(em, id))));
    }

Если бы это был nodejs, то там бы написал такой код с использованием Promise

var Q = require('q')
Q.all([ repository.get(id1), repository.get(id2) ])
    .then(result -> {
        console.log(result[0] + ' ' + result[1])
     })

Можно ли тоже самое повторить в Java? Мне приходится писать вот такой код:

CompletableFuture<CompletionStage<Account>> first = CompletableFuture.supplyAsync(() -> repository.get(actionActionTuple._1.getAccountId()));
CompletableFuture<CompletionStage<Account>> second = CompletableFuture.supplyAsync(() -> repository.get(actionActionTuple._2.getAccountId()));
return CompletableFuture.allOf(first, second)
        .thenAcceptAsync(res -> {
            System.out.println("res = " + res);
        });

На деле получается очень много кода, который имхо не нужен (например, CompletableFuture.supplyAsync(() -> repository.get(actionActionTuple._1.getAccountId())))

READ ALSO
Относительный путь (алгоритм)

Относительный путь (алгоритм)

Одному знакомому дали такое задание на экзамене:

153
Проблемы с генерированием апк

Проблемы с генерированием апк

На устройстве занимался отладкой приложенияЗатем удалил его

144
SharedPrefernces на несколько активити

SharedPrefernces на несколько активити

Использую SharedPreference для настроек приложения, есть единственное но, как сделать чтобы SharedPrefernce можно было вызвать из любого активити?

179