пусто в Monix Task - PullRequest
       35

пусто в Monix Task

0 голосов
/ 15 марта 2019

В 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.

1 Ответ

0 голосов
/ 18 марта 2019

Monix 'Task и Project Reactor Mono отличаются по логике. В то время как Mono может завершаться до «ничего», Task может завершаться только до «чего-то» или никогда не завершаться вообще (что имеет гораздо больший смысл).

Чтобы правильно описать вашу проблему с Task, вам нужно будет использовать что-то вроде Task[Option[T]] и затем вернуть Task.now(None) или перейти к Monix 'Observable, который моделирует поток элементов (который также может быть пусто).

...