0

Project Reactor 有类似 Mono.empty[T]() 的东西,可以在特殊情况下处理,在这种情况下你在评估它时没有任何东西。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 调用端添加另一个空/空检查。

4

1 回答 1

0

MonixTask和 Project ReactorMono在逻辑上有所不同。虽然Mono可以完成“无”,Task但只能完成“某事”或根本不完成(这更有意义)。

要正确描述您的问题Task,您将不得不使用类似的东西Task[Option[T]],然后返回Task.now(None)或移至 Monix' Observable,它模拟元素流(也可以是空的)。

于 2019-03-18T11:57:28.123 回答