Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

CompletableFuture.thenApply()

Добавляет шаг, который преобразует результат, когда тот будет готов.

Доступно с: Java 8

Синтаксис

<U> CompletableFuture<U> thenApply(Function<? super T, ? extends U> fn)

Параметры

ПараметрТипОписание
fnFunction<? super T, ? extends U>Преобразование готового результата.

Возвращаемое значение

CompletableFuture<U>Новый `CompletableFuture` с преобразованным результатом.

Примеры

Цепочка шагов:

void main() {
    int length = CompletableFuture.supplyAsync(() -> "  Hello, async world  ")
        .thenApply(String::strip)
        .thenApply(String::length)
        .join();
    IO.println(length);
}

Результат:

18

Обработка ошибки в цепочке:

void main() {
    String result = CompletableFuture.supplyAsync(() -> Integer.parseInt("oops"))
        .thenApply(n -> "number " + n)
        .exceptionally(e -> "failed: " + e.getCause().getMessage())
        .join();
    IO.println(result);
}

Результат:

failed: For input string: "oops"

Примечания

Это аналог map() для будущего результата. Если функция сама возвращает CompletableFuture, используйте thenCompose(); если результат не нужен дальше — thenAccept(). Ошибка на любом шаге пропускает следующие thenApply() и попадает в exceptionally() или handle().

См. также

  • CompletableFuture.supplyAsync() — Запускает вычисление асинхронно и возвращает `CompletableFuture`.
  • CompletableFuture.thenCombine() — Объединяет результаты двух независимых задач, когда готовы обе.
  • Stream.map() — Преобразует каждый элемент потока.

Вопросы и ответы по теме

В учебнике

  • CompletableFuture — Асинхронные цепочки в Java — CompletableFuture.supplyAsync, thenApply, thenAccept, thenCombine, allOf, обработка ошибок через exceptionally и join.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.