Java 8: остановка и затем цепочка - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю в Java Project.У меня есть цепочка andThen Operator, что-то вроде:

new xxx().andThen(new yyy()).andThen(new zzz()).apply();

xxx, yyy, zzz - все реализованные функции интерфейса.

Иногда, если конкретные условные в реализации yyy.apply верно, после выполнения yyy.apply, я хочу остановить процесс и завершить работу без запуска zzz.apply .

Есть ли способ сделать это?

Спасибо.

Для лучшего понимания , я подробно расскажу о своем деле.Я не могу показать свой код - это очень длинная логика занятости, а также защищенная, но я могу описать свой случай: моя цель кода - получить список данных из нереляционной БД.Логика поиска очень сложна.Итак, я разделил логику по отдельным шагам, каждый шаг реализован потребителем.Каждый потребитель возвращает следующему потребителю запрос клиента с улучшениями, которые он выполняет.Например, за один шаг добавьте дополнительные фильтры к запросу клиента источника.Другой запрос анализирует столбцы (которые пользователь попросил показать в сетке) и конвертирует их в соответствующий столбец в БД.Один из моих клиентов специально для крайних случаев, когда нам нужно сначала получить данные с сервера MY-SQL и только после этого продолжить получать из нереляционной БД.Это тот момент, когда я иногда хочу остановиться.потому что когда-то я обнаружил, что в соответствии с данными, возвращаемыми из SQL, я не знаю, показывать ли пользователю какие-либо данные (даже если в БД есть данные).Именно в этот момент я хочу остановить эту цепь.

1 Ответ

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

Просто сделай это отдельно.Если вы используете какой-то поток, выполните одну функцию, затем реализуйте конкретное условное выражение как Predicate, а другую -:

stream
    .map(new yyy())
    .filter(specificConditional)  // predicate
    .map(new zzz())
    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...