我正在寻找一种方法来检索另一个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
答案 0 :(得分:4)
将Mono
中的替代Mono.defer
换成switchIfEmpty
内的{{1}},只有当原始内容为空时才会被懒惰地实例化。