Это упрощенный пример, но он иллюстрирует суть.
Допустим, у меня есть метод, определенный следующим образом:
Flux<String> generateFlux() {
return Flux.just("hello", "world"); // (S)
}
Есть ли способ сделать, например, S
напечатать что-нибудь после того, как элемент был израсходован без того, чтобы подписчик потока что-либо делал или знал об этом?
Например, я бы изменил S
так, чтобы это:
generateFlux().doOnNext(System.out::println).block()
фактически выводит это на консоль:
hello
consumed
world
consumed
Возможно ли это сделать с помощью Reactor 3.3, и если да, то как?
Обновить
Думаю, мой вопрос был неясным, поэтому я добавлю несколько деталей. Суть моего вопроса заключается в том, что я хочу, чтобы это было без изменений :
generateFlux().doOnNext(System.out::println).block() // A
Поэтому я хочу изменить S
, т.е. Flux.just("hello", "world")
, чтобы учесть то, что я прошу, не A
. Я знаю, что вы можете добавить subscribe
и doOnNext
et c к A
, но это , а не , о чем я прошу. Я спрашиваю, есть ли способ изменить S
, чтобы без каких-либо изменений в A
это было напечатано, когда подписчик / потребитель A
обработал все элементы:
hello
consumed
world
consumed
Т.е. этот S
каким-то образом получает сигнал о том, что первый элемент был использован («привет»), а затем он может выполнить doOnNext
(или что-то еще) и в этом случае вывести «потребитель». Когда второй элемент израсходован («мир»), он должен снова напечатать «потреблен».
Возможно ли это?