如果verify()返回Mono.error(TheException()),如何避免get(id)方法被调用

时间:2018-08-13 15:59:38

标签: kotlin project-reactor

首先需要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>

1 个答案:

答案 0 :(得分:-1)

给出您对代码的注释,看来您的verify方法应具有以下签名:

fun verify(): Unit

通常在Kotlin中,您只会抛出Exception而不是返回错误(也许您有自己的错误类型要返回?在这种情况下,如果您确实想要,可以返回MyError?

get应该看起来像这样:

fun get(id: Int): MyEntity?

类型名称末尾的?表示返回值是可选的,因此它可能是null

verify与您的get函数结合起来很简单:

fun verifyThenGet(id: Int): MyEntity? {
    verify()
    return get(id)
}