Spring Reactor doOnNext,它被执行了吗?

Seb*_*Seb 3 spring reactive-programming spring-webflux

我在玩反应堆

public @NotNull Mono<ServerResponse> findXXXXSse(final ServerRequest request) {
    return request.bodyToMono(XXXXSearch.class)
            .doOnNext(this::validate)
            .flatMap(this::findXXXXSse)
            .switchIfEmpty(this.emptyBodyException());
}
Run Code Online (Sandbox Code Playgroud)

我想知道使用.doOnNext(this::validate)是否正确。从我的角度来看,我不确定在findXXXXSse?之前调用 validate 。

我错了吗?

Avi*_*ari 5

Flux.doOnNext方法应该始终被用作副作用。

文档说“添加 Flux 发出项目时触发的行为(副作用)”。请参阅: https: //projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#doOnNext-java.util.function.Consumer-

我假设您只想在验证成功时恢复链,即 .flatMap(this::findXXXXSse)仅在验证成功时才应调用。

您可以使用filter(this::validate)并添加一个validate(XXXXSearch.class)方法来返回 true/false。