Java8 CompletableFuture recoveryWith等效吗?例如异常,但返回CompletableFuture <U>

杰森·G

我没有看到一种处理异步结果异常的明显方法。例如,如果我想重试异步操作。我会期望像这样的事情,但是handleAsync并没有按照您认为的那样做-异步地在另一个线程上运行回调。在这里返回CompletionStage是不正确的。当天的危害问题:thenApply就是thenCompose因为exceptionally是为了什么?

CompletionStage<String> cf = askPong("cause error").handleAsync((x, t) -> {
    if (t != null) {
        return askPong("Ping");
    } else {
        return x;
    }
});

AskPong在哪里问演员:

public CompletionStage<String> askPong(String message){
    Future sFuture = ask(actorRef, message, 1000);
    final CompletionStage<String> cs = toJava(sFuture);
    return cs;
} 
杰夫·格里菲斯

在试图找出用Java 8完成Scala的restoreWith的正确方法后,我大失所望,最后我还是自己写了。我仍然不知道这是否是最好的方法,但是我创建了以下内容:

public RecoveryChainAsync<T> recoverWith(Function<Throwable,
                                         CompletableFuture<T>> fn);

通过重复调用recoverWith,我将恢复链中的功能排入队列,并使用“ handle”自己实现恢复流程。然后,RecoveryChainAsync.getCompletableFuture()返回整个链的代表性CompletableFuture。希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章