Reactor Spring WebFlux: объясните, пожалуйста, разницу между методами last () и takeLast () - PullRequest
0 голосов
/ 21 февраля 2020

Может кто-нибудь объяснить мне разницу между методами last () и takeLast ()? Как сказано в документации:

last () - испускать последний элемент, наблюдаемый до завершения сигнала, как Mono, или выдавать ошибку NoSuchElementException, если источник был пуст. Для пассивной версии используйте takeLast (int)

takeLast () - испускать последние значения N, которые этот поток испускал до своего завершения.

Что касается меня, то же самое. Я не могу понять различия. Может ли кто-нибудь объяснить мне простой пример? Заранее спасибо

1 Ответ

2 голосов
/ 21 февраля 2020

Кирилл,

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()

...