【发布时间】:2020-08-07 23:51:25
【问题描述】:
我有这样的方法:
fun getActiveVersionWithCacheMiss(type: String): Mono<ActiveVersion> {
return activeVersionRepository.findByType(type)
.switchIfEmpty(
Mono.defer(return persist(ActiveVersion(type,1)))
)
}
persist 方法是一种保存活动版本的简单方法:
fun persist(activeVersion: ActiveVersion): Mono<ActiveVersion>{...}
在我的测试中,我模拟了 activeVersionRepository 以返回 findByType 的简单值。在调试期间activeVersionRepository.findByType(type).block() 评估为一个值并且绝对不为空。
我想知道为什么尽管使用了 defer switchIfEmpty 仍然被调用?
【问题讨论】:
标签: kotlin reactive-programming reactor