有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Filter多工况反应器通量/单过滤器When()

我正在使用Mono的filterWhen(),有以下多种情况,但不知道如何实现正确的方法

Mono.just("a").filterWhen(item -> conditionA && conditionB)...
// or Mono.just("a").filterWhen(item -> conditionA || conditionB)...

// both is reactive call
Mono<Boolean> conditionA(String a) {
     return webClient.call(....).map(Boolean);//sample return Boolean here}
Mono<Boolean> conditionB(String a) {
     return webClient.call(....).map(Boolean);//sample return Boolean here}

当使用条件A&&;conditionB,当conditionA(或conditionB)返回false时,它是否立即返回

此外,当使用conditionA | | conditionB时,当conditionA(或conditionB)返回true时,它是否立即返回


共 (1) 个答案

  1. # 1 楼答案

    运算符Flux#allFlux#any就是您要寻找的

    首先,将响应合并到Boolean中的Flux并使用Flux#all发出一个布尔值true,如果所有响应的计算结果为true:

    Flux.merge(conditionA(), conditionB()).all(condition -> condition)
    

    通过这种方式,如果conditionAfalse,则值false将在不等待对contitionB求值的情况下发出

    作为补充说明,Flux.merge急切地订阅出版商(所有出版商一起订阅)。如果希望按顺序执行条件,请使用Flux.concat