Kotlin 如果verify()返回Mono.error(TheException()),如何避免调用get(id)方法
首先需要Kotlin 如果verify()返回Mono.error(TheException()),如何避免调用get(id)方法,kotlin,project-reactor,Kotlin,Project Reactor,首先需要verify()。如何编写方法verifyThenGet(id)code 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(Th
verify()。如何编写方法verifyThenGet(id)
code
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>
fun-verifyThenGet(id:Int):Mono{
return verify().then(get(id))//即使验证失败,也要调用get(id)
}
//如果验证成功,则返回Mono.empty(),
//否则返回Mono.error(TheException())
fun verify():Mono
//得到实体
趣味游戏(id:Int):单声道
鉴于对代码的注释,您的验证方法应该具有以下签名:
fun verify(): Unit
在Kotlin中,通常情况下,您只会抛出一个异常
,而不是返回一个错误(可能您有自己的错误类型要返回?在这种情况下,如果您真的想要返回MyError?
)
get
可能如下所示:
fun get(id: Int): MyEntity?
类型名称末尾的?
表示返回值是可选的,因此它可能是null
要将verify
与get
函数结合使用,非常简单:
fun verifyThenGet(id: Int): MyEntity? {
verify()
return get(id)
}
为什么verify()
首先返回Mono
?为什么Void
(特别是在Kotlin中)?因为如果verify ok,则不需要返回任何内容,只需完成信号。如果它无法编译,则需要从编译器读取错误消息,如果不理解,则需要发布错误消息。并发布实际代码int
在Kotlin中不存在。@jbnite将int更正为int。很抱歉,我提出了一个错误的问题,我再次更改了它。调用get(id)是完全正常的。get(id)只是创建一个Mono。它实际上什么都没做。当订户订阅get(id)返回的Mono时,实际工作(即通过查询数据库获取实体)将发生。但是,如果verify()返回错误Mono,则不会发生这种情况。要清楚,我的问题代码是反应性程序代码,所有方法都需要是反应性的。所以返回值是设计为Mono的。如果你在问题中忘记提到这个,你想让我们怎么知道?