Разбираюсь с фреймворком 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()))
)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую SharedPreference для настроек приложения, есть единственное но, как сделать чтобы SharedPrefernce можно было вызвать из любого активити?