作为 if 语句的结果,我如何在另一个反应流中使用一个反应流
How can I use one reactive stream inside another reactive stream as result of if statement
我必须将一种方法重构为响应式 returns Enum.VALUE。该方法的工作方式类似于从一个 if 语句到另一个 if 语句的过滤器。当某些 if 语句 returns 为真(在 map() 方法上)或通过所有元素的路径时,我使用 Pair 和代码制动链。它可以工作,但是在 map() if 语句中使用了两个辅助方法,它们实际上是阻塞的,所以我必须让它们成为非阻塞的。辅助方法 一个returns boolean 每次方法调用时必须调用。这是示例代码:
public Mono<Enum> method(String param) {
return Mono.just(param)
.map(
//filter if-statement
)
.map(
//filter if-statement
)
.map(
pair -> {
if (auxiliaryMethodOne(param)) {
//filter if-statement
}
}
)
.map(
//filter if-statement
)
}
private Mono <Boolean> auxiliaryMethodOne(String param) {
//some logic returns Mono<Boolean>
}
您可以使用 Mono#filterWhen
:
myMono.filterWhen(pair -> auxiliaryMethodOne(param))
我必须将一种方法重构为响应式 returns Enum.VALUE。该方法的工作方式类似于从一个 if 语句到另一个 if 语句的过滤器。当某些 if 语句 returns 为真(在 map() 方法上)或通过所有元素的路径时,我使用 Pair 和代码制动链。它可以工作,但是在 map() if 语句中使用了两个辅助方法,它们实际上是阻塞的,所以我必须让它们成为非阻塞的。辅助方法 一个returns boolean 每次方法调用时必须调用。这是示例代码:
public Mono<Enum> method(String param) {
return Mono.just(param)
.map(
//filter if-statement
)
.map(
//filter if-statement
)
.map(
pair -> {
if (auxiliaryMethodOne(param)) {
//filter if-statement
}
}
)
.map(
//filter if-statement
)
}
private Mono <Boolean> auxiliaryMethodOne(String param) {
//some logic returns Mono<Boolean>
}
您可以使用 Mono#filterWhen
:
myMono.filterWhen(pair -> auxiliaryMethodOne(param))