Как вернуть Observable.empty (), если observable.filter (). First () ничего не возвращает? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть функция в RxJava, которая пытается найти вещь на основе условия, и в случае успеха она преобразуется и возвращает ее как Observable. Я хочу вернуть Observable.empty(), если он не может ничего найти, поэтому нет первого. Я не уверен в этом, но я думаю, что если фильтр отфильтровывает каждый элемент в Observable, то в любом случае результат будет Observable.empty() (без firstElement()).

void Observable<Thing> transformFirst(Observable<Thing> things,Predicate<Thing> condition){
  return things
    .filter(condition)
    .firstElement()
    .map(firstThing ->{...do sg...})
}

EDIT:

Моя проблема в том, что firstElement() возвращает Maybe<Thing>, и я не знаю, как превратить это в Observable.empty(), когда filter(condition) отфильтровывает все (condition оценивается как ложное для каждого thing)

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете добавить switchIfEmpty (), как показано ниже,

return things
    .filter(condition)
    .switchIfEmpty(Observable.empty())
    .firstElement()
    .map(firstThing ->{...do sg...})
...