在下面的代码中,我根据某些逻辑过滤通量中的元素,然后根据 Web 服务调用的结果进一步过滤。现在,Web 服务返回一个 Mono,因此我可以在过滤器方法中使用它。调用 block() 不起作用。有人可以如何解决这个问题吗?提前致谢。由于我删除了公司特定代码,该代码无法完全编译。
protected Flux<> getFilteredResults(Flux<> resultsToFilter, boolean someBoolean) {
return resultsToFilter.filter(cr -> {
//Filtering logic
})
.filter( a-> {
Mono<Boolean> serviceCallResult = makeServiceCall(a);
return serviceCallResult.block(); //HOW TO DO THIS CORRECTLY
});
}
最佳答案
在构建 react 流时,您应该避免阻塞
。 filter
可用于应用同步逻辑。如果您需要应用返回 Mono
的异步函数 - 请使用 filterWhen
。
protected Flux<> getFilteredResults(Flux<> resultsToFilter, boolean someBoolean) {
return resultsToFilter
.filterWhen(a -> makeServiceCall(a));
}
关于java - 根据Web服务调用结果过滤Flux元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72774283/