【发布时间】:2019-01-20 10:06:43
【问题描述】:
首先需要verify()的东西,如果一切正常则调用get(id)方法获取实体,否则不需要调用get(id)。方法verifyThenGet(id)代码怎么写?
fun verifyThenGet(id: Int) : Mono<MyEntity> {
return verify().then(get(id)) // also invoke get(id) even verify failed
}
// return Mono.empty() if success to verify,
// otherwise return Mono.error(TheException())
fun verify() : Mono<Void>
// get the entiry
fun get(id: Int) : Mono<MyEntity>
【问题讨论】:
-
为什么
verify()首先返回Mono<Void>?为什么是Void(尤其是在 Kotlin 中)? -
因为如果验证成功,不需要返回任何东西,只需完成信号。
-
如果编译失败,需要阅读编译器的错误信息,看不懂的贴出来。并发布实际代码。
int在 Kotlin 中不存在。 -
@JBNizet 将 int 正确为 Int。对不起,我问错了,我再改一次。
-
get(id) 被调用是完全正常的。 get(id) 只是创建一个 Mono。它实际上并没有做任何事情。实际工作(即通过查询数据库获取实体)将在订阅者订阅 get(id) 返回的 Mono 时发生。但如果 verify() 返回错误 Mono,则不会发生这种情况。