Пропустить остальную часть конвейера rx-java, не вызывая исключения. ⇐ JAVA
-
Anonymous
Пропустить остальную часть конвейера rx-java, не вызывая исключения.
Мне интересно, как лучше всего пропустить выполнение остальной части конвейера, если на шаге что-то произойдет.
Предположим, у меня есть такой длинный конвейер (котлин). Я хотел бы избежать использования дорогостоящего ресурса barAsync, когда fooAsnyc возвращает что-то проблемное. (Не исключение).
fun longAsyncCalculation(): Mono { вернуть Mono.just(Контекст()) .flatMap { контекст -> fooAsync (контекст) }.flatMap { контекст -> барAsync (контекст) }.map { контекст -> createResponse (контекст) } } Конечно, я могу генерировать исключение, но мне хотелось бы избежать управления ходом программы с помощью исключений.
Кроме того, мне бы хотелось избежать проверки контекста на каждом этапе конвейера следующим образом:
... .flatMap { контекст -> если (context.hasError) { Моно.просто(...) } еще { doTheRealAsyncCall() } }.flatMap { контекст -> ... Можно ли продолжить работу по пути ошибки, не создавая исключения? Думаю, нет, потому что методы обработки ошибок rx всегда работают с Throwable.
Любые передовые практики будут полезны.
Спасибо
Мне интересно, как лучше всего пропустить выполнение остальной части конвейера, если на шаге что-то произойдет.
Предположим, у меня есть такой длинный конвейер (котлин). Я хотел бы избежать использования дорогостоящего ресурса barAsync, когда fooAsnyc возвращает что-то проблемное. (Не исключение).
fun longAsyncCalculation(): Mono { вернуть Mono.just(Контекст()) .flatMap { контекст -> fooAsync (контекст) }.flatMap { контекст -> барAsync (контекст) }.map { контекст -> createResponse (контекст) } } Конечно, я могу генерировать исключение, но мне хотелось бы избежать управления ходом программы с помощью исключений.
Кроме того, мне бы хотелось избежать проверки контекста на каждом этапе конвейера следующим образом:
... .flatMap { контекст -> если (context.hasError) { Моно.просто(...) } еще { doTheRealAsyncCall() } }.flatMap { контекст -> ... Можно ли продолжить работу по пути ошибки, не создавая исключения? Думаю, нет, потому что методы обработки ошибок rx всегда работают с Throwable.
Любые передовые практики будут полезны.
Спасибо
Мобильная версия