Что такое CompletableFuture эквивалент Streams peek()?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Что такое CompletableFuture эквивалент Streams peek()?

Сообщение Anonymous »

В ответе здесь приведена таблица всех методов CompletableFuture, но это не совсем то, что я ищу, или, возможно, я делаю это неправильно.
Я ищу эквивалент CompletableFuture для peek() Streams, поэтому в основном thenApply, который возвращает входной аргумент, или thenRun, который не возвращает Void. Я могу придумать два способа, которые не семантически точно выражают мое намерение, но выполняют свою работу:

Код: Выделить всё

(..)
.thenApply((a) -> {
doSomething();
return a;
}
(..)
и

Код: Выделить всё

(..)
.whenComplete((result, exception) -> {
if (exception == null) {
doSomething();
}
}
(..)
Оба принимают входные данные с предыдущего этапа, позволяют мне выполнить действие и вернуться с тем же типом на следующий этап. Из этих двух последний второй подход ограничивает мое время выполнением всего остального, а не асинхронным, как только предыдущий необходимый этап будет завершен.
Я также искал функцию идентификации, которая принимает потребительскую функцию в качестве аргумента, но, похоже, мне придется написать ее самому:

Код: Выделить всё

public static  Function identityConsumer(Consumer c) {
return a -> { c.accept(a); return a; };
}

Код: Выделить всё

(..)
.thenApply(identityConsumer(a -> doSomething()));
(..)
Итак, если не считать написания собственных служебных функций, существует ли элегантный способ выполнения действия на промежуточном этапе, когда мне не нужно что-то возвращать, сохраняя при этом текущий тип этапа?


Подробнее здесь: https://stackoverflow.com/questions/707 ... reams-peek
Ответить

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

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

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

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

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