Как прекратить выполнение вызовов webflux, если предыдущий вызов возвращает ok

#java #spring-webflux #project-reactor

Вопрос:

я только что начал свое путешествие по реактору и заблокирован при последующей реализации.

 Listlt;Integergt; l = Arrays.asList(1, 2, 3, 4); Integer firstValuePresent = 0; for (int i = 0; i lt; l.size(); i  ) {  x = checkDb(l.get(i));//db or any io call  if (x.isPresent())//check for the first available value in db  {  firstValuePresent = l.get(i);  break;  } } //do something with firstValuePresent  

как я могу так поступить в случае с реактором. Я подозреваю, что «бери или бери» может помочь, но не знаю как. Помощь ценится

Комментарии:

1. Обратите внимание, что я хочу последовательно проверять бд на наличие значений.

Ответ №1:

Вы можете попробовать это двумя операторами:

  • filter(Predicatelt;? super Tgt; p) — Оцените каждое исходное значение по заданному предикату.
  • next() — Излучайте только первый элемент, испускаемый этим потоком, в новый Моно.

подобный этому:

 Flux.just(1,2,3,4).filter(i -gt; checkDb(i).isPresent()).next();