Как использовать несколько монад и асинхронныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как использовать несколько монад и асинхронных

Сообщение Anonymous »

Использование этой библиотеки для монады Java https://github.com/jasongoodwin/better-java-monads
У меня есть существующий асинхронный вызов, завернутый в Try и работающий с Futures. последовательность
например,
List requests = [...]
CompletableFuture items = Futures.sequence(requests);
List result = items.join()
.stream()
.map(try -> myFunction(try))
.collect(Collectors.toList())

...

private Try myFunction(Try fooTry) {
return fooTry.flatMap(foo -> Try.ofFailable(() -> process(foo)));
}

есть ли пример/поддержка двух асинхронных вызовов?
например,
List requests1 = [...]
List requests2 = [...]
// requests1.size(), requests2.size() are the same value
List results = new ArrayList();
for (int i = 0; i < items1.size(); i++) {
CompletableFuture combined = items1.get(i).thenCombine(items2.get(i), (fooTry, barTry) -> myFunction(fooTry, barTry));
results.add(combined);
}

List results = results.stream().map(CompletableFuture::join).collect(Collectors.toList());
...

private Try myFunction(Try fooTry, Try barTry) {
return fooTry.flatMap(foo -> barTry.flatMap(bar -> Try.ofFailable(() -> process(foo, bar))));
}


Подробнее здесь: https://stackoverflow.com/questions/783 ... and-asyncs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»