Kotlin协程Mono代码块:abc为null时返回值及返回Mono.empty()的方法
Kotlin协程中Mono代码的返回值问题
原代码在abc为null时的返回值
当abc为null时,这段代码会返回一个包含null值的Mono<Int?>——它不会触发空Mono的逻辑,而是把null作为一个合法的元素发射出去,订阅者会收到null值而非空信号。
修改代码使其在abc为null时返回Mono.empty()
你可以通过在协程块内判断null值,直接返回空Mono:
mono { val abc: Int? = getSomeValue().awaitSingleOrNull abc ?: return@mono empty<Int>() }
或者更简洁的写法:
mono { getSomeValue().awaitSingleOrNull ?: empty<Int>() }
这样当abc为null时,协程会返回Mono.empty();当abc非null时,会返回包含该值的Mono<Int>,同时类型也从Mono<Int?>变成了更严谨的Mono<Int>。
内容的提问来源于stack exchange,提问作者M_nik B
相关产品推荐
相关产品推荐

