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 楼答案
运算符
Flux#all
和Flux#any
就是您要寻找的首先,将响应合并到
Boolean
中的Flux
并使用Flux#all
发出一个布尔值true,如果所有响应的计算结果为true:通过这种方式,如果
conditionA
是false
,则值false
将在不等待对contitionB
求值的情况下发出作为补充说明,
Flux.merge
急切地订阅出版商(所有出版商一起订阅)。如果希望按顺序执行条件,请使用Flux.concat