有人能解释我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()

10-01 00:51