懒惰地评估了Project Reactor的Mono

时间:2018-02-05 14:19:42

标签: java project-reactor

我正在寻找一种方法来检索另一个Mono,以防原始的Mono为空。我找到的最接近的是Mono.switchIfEmpty,但我的问题是我无法将lambda表达式传递给它,因此即使Mono具有非空值也会调用它。这有点像Optional.orElse vs Optional.orElseGet

以下是一个示例:

return someService.findSomeElements()           // returns a Flux<Element>
                  .filter(this::checkIfMatches)
                  .singleOrEmpty()
                  .switchIfEmpty(...);          // <-- I want to use lambda here 

1 个答案:

答案 0 :(得分:4)

Mono中的替代Mono.defer换成switchIfEmpty内的{{1}},只有当原始内容为空时才会被懒惰地实例化。