Reactor Spring WebFlux:请解释 last() 和 takeLast() 方法之间的区别

Reactor Spring WebFlux: Explain please difference between last() and takeLast() methods

任何人都可以向我解释 last() 和 takeLast() 方法之间的区别吗? 正如文档所述:

last() - 将在完成信号之前观察到的最后一个元素作为 Mono 发出,或者如果源为空则发出 NoSuchElementException 错误。对于被动版本使用 takeLast(int)

takeLast() - 发出此 Flux 在完成之前发出的最后 N 个值。

我也一样。 我无法理解差异。 有人可以用一个简单的例子来解释我吗? 提前致谢

基里尔,

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