CompletableFuture链未调用thenAcceptAsync

问题描述 投票:0回答:1

doTask()是一种在previousStepResult成功的情况下执行某些操作的方法,否则记录并按原样返回previousStepResult。下面的代码工作正常,并且仅当没有异常(错误)时才执行conclude()。但是,如果有异常(处理得当),代码将返回false。因此,如果发生错误,则将下一步称为精细,并记录并返回false。但是,conclude根本没有被调用。我不确定每个步骤中是否有异常影响阻止执行thenAcceptAsync或执行什么操作。有任何线索吗?

return CompletableFuture.supplyAsync(() -> doTask("task1", true), taskExecutor).
                thenApplyAsync(previousStepResult -> doTask("task2", previousStepResult),taskExecutor).
                thenApplyAsync(previousStepResult -> doTask("task3", previousStepResult),taskExecutor).
                thenAcceptAsync(previousStepResult -> conclude(previousStepResult),taskExecutor);
java completable-future
1个回答
0
投票

在可能引发错误的步骤之后,使用CompletableFuture::handleCompletableFuture::handleAsync。这将导致进一步的步骤被调用,否则将被跳过。

© www.soinside.com 2019 - 2024. All rights reserved.