Реактор: обнаружение пустого сигнала, чтобы иметь возможность действовать на пустой моно - PullRequest
0 голосов
/ 26 февраля 2019

Есть ли оператор или какой-нибудь хороший подход для достижения поведения doOnEmpty () с Project Reactor Mono?

Я хочу иметь побочные эффекты (ведение журнала) для результата операции.

Этовот что у меня сейчас:

myMono
  .map(value -> new Wrapped(value))
  .defaultIfEmpty(new Wrapped(null))
  .doOnEach( ... )
  .flatMap(wrapped -> 
    wrapped.value == null ? 
      Mono.empty() : Mono.just(wrapped.value))

Так что я оборачиваю фактическое значение или в случае пустого создания пустой обертки.Затем оболочка используется для побочных эффектов.

Вместо этого было бы неплохо использовать что-то вроде doOnEmpty (Consumer> signalConsumer).Чтобы усложнить ситуацию, мне нужно иметь доступ к Сигналу , чтобы получить доступ к Контексту (содержит данные, необходимые для регистрации).

Есть эти ответы но я не думаю, что они применяют или предоставляют доступ к контексту.

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

"Есть ли способ определитьна doOnEach (потребительский сигнал), если наблюдаемое разрешено пустым? "

...