Пропустить остальную часть конвейера rx-java, не вызывая исключения.JAVA

Программисты JAVA общаются здесь
Anonymous
Пропустить остальную часть конвейера rx-java, не вызывая исключения.

Сообщение Anonymous »


Мне интересно, как лучше всего пропустить выполнение остальной части конвейера, если на шаге что-то произойдет.

Предположим, у меня есть такой длинный конвейер (котлин). Я хотел бы избежать использования дорогостоящего ресурса barAsync, когда fooAsnyc возвращает что-то проблемное. (Не исключение).

fun longAsyncCalculation(): Mono { вернуть Mono.just(Контекст()) .flatMap { контекст -> fooAsync (контекст) }.flatMap { контекст -> барAsync (контекст) }.map { контекст -> createResponse (контекст) } } Конечно, я могу генерировать исключение, но мне хотелось бы избежать управления ходом программы с помощью исключений.

Кроме того, мне бы хотелось избежать проверки контекста на каждом этапе конвейера следующим образом:

... .flatMap { контекст -> если (context.hasError) { Моно.просто(...) } еще { doTheRealAsyncCall() } }.flatMap { контекст -> ... Можно ли продолжить работу по пути ошибки, не создавая исключения? Думаю, нет, потому что методы обработки ошибок rx всегда работают с Throwable.

Любые передовые практики будут полезны.

Спасибо

Вернуться в «JAVA»