当链中发生错误时更新原始单声道

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

假设我有这样的东西:

Mono.just(a)
    .flatMap(...) // init
    // set fields on a if error occurs
    .flatMap(...) // finalize
    .subscribe();

在最后一个flatMap中,我正在根据a中字段的值执行一些最终逻辑。特别是我需要知道初始化期间是否发生了错误...

因此,我需要一种可以拦截错误并允许操作原始对象的方法。

如果我没记错的话,所有onError*方法都将返回原始对象而不允许对其进行更新。

[doOnError似乎也不能解决我的问题。

有没有办法实现我所需要的?

java project-reactor reactor
1个回答
0
投票

[您缺少每个下一个反应式运算符都会为我们构建一个新的Mono实例的事实。因此,如果再添​​加一个运算符,这对您来说并不重要:

/**
 * Simply emit a captured fallback value when any error is observed on this {@link Mono}.
 *
 * <p>
 * <img class="marble" src="doc-files/marbles/onErrorReturnForMono.svg" alt="">
 *
 * @param fallback the value to emit if an error occurs
 *
 * @return a new falling back {@link Mono}
 */
public final Mono<T> onErrorReturn(final T fallback) {

Mono.just(a)
    .flatMap(...)
    .onErrorReturn(fallbackValue)
    .flatMap(...)
    .subscribe();

您绝对可以研究所有其他onError*以获得任何可能的错误处理变体。

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