项目反应器有一些类似Mono.emptyT的东西,它可以在特殊情况下处理,当你没有任何东西时,它被评估。在Monix Task中有类似的东西吗?
def getItemFromList[T](inp: Mono[List[T]]): Mono[T] = {
val moList = inp.defaultIfEmpty(List[T]())
moList.flatMap[T]((list: List[T]) => {
if (list.isEmpty) Mono.empty[T]()
else Mono.just(list.head)
})
}在这里,我试图从一个项目列表中提升一个项目,在这个列表中,当从数据库读取时,这个列表可能不存在。我不想发送像Mono.just(List())这样的东西,因为这将需要我在db调用端添加另一个空/null检查。
发布于 2019-03-18 19:57:28
Monix的Task和项目反应堆的Mono在逻辑上是不同的。Mono可以完成为"nothing",而Task只能完成为"something“,或者根本不完成(这更有意义)。
为了正确描述你的Task问题,你必须使用类似Task[Option[T]]的东西,然后返回Task.now(None)或者转移到Monix的Observable,它对一个元素流(也可以是空的)进行建模。
https://stackoverflow.com/questions/55182039
复制相似问题