延迟评估 Project Reactor 的 Mono 的 switchIfEmpty
Lazily evaluated switchIfEmpty for Project Reactor's Mono
我正在寻找一种方法来检索替代的 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
将替代项 Mono
包装在 switchIfEmpty
内的 Mono.defer
中,只有当原始项为空时才会延迟实例化。
我正在寻找一种方法来检索替代的 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
将替代项 Mono
包装在 switchIfEmpty
内的 Mono.defer
中,只有当原始项为空时才会延迟实例化。