В RXJava у меня есть 2 наблюдаемые, которые являются ответами от 2 нисходящих вызовов. Один нисходящий вызов - это длинный опросный вызов, другой - короткий и возвращается сразу.Я использую Observable.zip для объединения ответов обоих ответов. Приведенный ниже код работает нормально.
Observable
.zip(observable1, observable2)
.flatMap(update -> foo(update));
Теперь я хочу реализовать следующее: если вывод короткого нисходящего вызова (observable1)не содержит определенного значения, затем пропустите zip, т.е. не ждите вывода более длинного нисходящего вызова (observable2).Я попытался реализовать это следующим образом, но если условие истинно, оно не проникает с observable2, но даже не генерирует ответ observable1.
Observable finalresponse = observable1
.takeWhile(obsResponse1 -> checkIfValueExist(obsResponse1))
.zipWith(observable2, (observable1, observable2) -> execute(observable1, observable2))
.flatMap(update -> main.execute(update));