假设我有以下几行
repository.findUser(name = "John Doe")
.map {
// User was found, continue processing
}
.switchIfEmpty(
// Just log that the user was not found
)
我目前的非最佳实践但有效的方法是将日志记录放在另一个函数中并调用它,例如 switchIfEmpty(userNotFound())
private fun userNotFound(): Mono<out Disposable> {
logger.info { "No user was found." }
return Mono.empty()
}
这可行,但我无法想象这是我应该做的。我该如何改进?
最佳答案
一种方法是在 switchIfEmpty
中使用 Mono.defer
:
repository.findUser(name = "John Doe")
.switchIfEmpty(Mono.defer{ ... })
或者,您可以使用 doOnSuccess
并检查 Mono
是否已在没有数据的情况下完成(Java 中的示例):
repository.findUser(name = "John Doe")
.doOnSuccess(e -> {
if (e == null) {
log.info("No user was found.");
}
})
关于kotlin - 如何记录空 Mono,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70542183/