gpt4 book ai didi

java - 连续执行不同的Completables

转载 作者:行者123 更新时间:2023-12-01 22:18:50 26 4
gpt4 key购买 nike

我目前正在尝试使用 Java 中的响应式扩展来实现特定结果,但是我做不到,也许你们中的某个人可以帮助我。

firstCompletable
.onErrorComplete(t -> specificErrorHandlingOne())
.andThen(secondCompletable())
.onErrorComplete(t -> specificErrorHandlingTwo())
.andThen(thirdCompletable())
.onErrorComplete(t -> specificErrorHandlingThree())
.andThen(fourthCompletable())
.onErrorComplete(t -> specificErrorHandlingFour())
.subscribe(viewCallback::showSuccess)

然而,当出现错误时,例如,secondCompletable,正在执行特定的错误处理,但其他 Completables 仍在被调度。如果其中一个 Completables 失败,我希望整个 Completables 链停止执行。我该怎么做?

我已经尝试改用 doOnError,但这只是在抛出的特定错误的堆栈跟踪上结束。

最佳答案

Completable.concat(
completable1.doOnError(e -> {...}),
completable2.doOnError(e -> {...}),
completable3.doOnError(e -> {...}),
completable4.doOnError(e -> {...})
).subscribe(action, errorConsumer);
  • Completables 将按指定顺序订阅
  • action 将在所有完成时调用
  • 您可以为每个错误处理程序指定(这是可选的)
  • 任何错误都会破坏管道并传播到订阅者 (errorConsumer)

您原来的 andThen 链也应该可以工作,但是您需要用 doOnError 替换 onErrorComplete,它将错误替换为完成调用指定的操作。或者只是从您的 specificErrorHandlingXxx() 返回 false

关于java - 连续执行不同的Completables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com