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