Reactor Spring WebFlux: объясните, пожалуйста, разницу между методами last () и takeLast ()
Может ли кто-нибудь объяснить мне разницу между методами last () и takeLast()? Как говорится в документации:
last () - испускает последний элемент, наблюдаемый перед полным сигналом, как Mono, или генерирует ошибку NoSuchElementException, если источник был пуст. Для пассивной версии используйте takeLast(int)
takeLast() - испускает последние N значений, сгенерированных этим потоком перед его завершением.
Как по мне то же самое. Не могу понять отличий. Может кто-нибудь объяснить мне простой пример? заранее спасибо
1 ответ
Кирилл,
takeLast(int n)
принимает целое число, указывающее, сколько элементов следует оставить в потоке. Пример:
Flux.just(1, 2, 3, 4)
.takeLast(3)
.subscribe(System.out::println);
Результат с
234
Между тем, last()
Метод касается только самого последнего испущенного элемента.
Flux.just(1, 2, 3, 4)
.last()
.subscribe(System.out::print);
На выходе
4
Вывод: takeLast(1)
равно last()