首页 > 解决方案 > 如果verify()返回Mono.error(TheException()),如何避免调用get(id)方法

问题描述

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

标签: kotlinproject-reactor

解决方案


鉴于对您的代码的注释,您的方法看起来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)
}

推荐阅读