Как я могу получить последний элемент Flux, не сворачивая его с помощью redu () или last ()? Вот мой вариант использования:
1) У меня есть генератор, который выдает Flux<T>
в зависимости от состояния. 2) Когда внутреннее Flux
завершает, оно изменяет состояние, которое влияет на следующие Flux
объекты, которые я излучаю в генераторе.
С математической точки зрения это выглядит так
static class State {
int secret = 2;
int iteration = 0;
}
Random rand = new Random(1024);
Flux<Integer> stream = Flux.<Flux<Integer>, State>generate(State::new, (state, sink) -> {
System.out.println(String.format("Generate: %d", state.secret));
Flux<Integer> inner = Flux.range(1, rand.nextInt(10));
sink.next(inner.doOnComplete(() -> {
// How do I get last item of `inner` here ?
// For example I'd like to decrement `state.secret` by last value of `inner`
}));
return state;
}).flatMap(Function.identity());