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的。如果你在问题中忘记提到这个,你想让我们怎么知道?