Пропустить остальную часть конвейера 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.

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

Спасибо
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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