有没有可能不把通量转换成流就能从通量中得到第一个元素?
kqhtkvqz1#
除了take(1)之外,如果需要一个表示Flux<T>的第一个元素的Mono<T>,可以使用.next()。或者,如果需要第i个元素,则使用.elementAt(i)(但必须确保这样的元素存在,这与take和next不同,take和next在元素不足时只返回空publisher)。
take(1)
Flux<T>
Mono<T>
.next()
.elementAt(i)
take
next
lg40wkob2#
Flux.range(1,10).take(1)应该可以完成这个任务(这里的range(...)部分只是发出一些样本值;如果您将blockFirst()或subscribe()添加到流,则应看到**'1'**)
Flux.range(1,10).take(1)
range(...)
blockFirst()
subscribe()
8i9zcol23#
您也可以使用Mono将您的Flux转换为Mono。from()
Flux
Mono
Mono<T> mono = Mono.from(flux);
它获取flux的第一个元素,如果flux没有发出任何元素,则以空结束。
3条答案
按热度按时间kqhtkvqz1#
除了
take(1)
之外,如果需要一个表示Flux<T>
的第一个元素的Mono<T>
,可以使用.next()
。或者,如果需要第i个元素,则使用
.elementAt(i)
(但必须确保这样的元素存在,这与take
和next
不同,take
和next
在元素不足时只返回空publisher)。lg40wkob2#
Flux.range(1,10).take(1)
应该可以完成这个任务(这里的range(...)
部分只是发出一些样本值;如果您将blockFirst()
或subscribe()
添加到流,则应看到**'1'**)8i9zcol23#
您也可以使用Mono将您的
Flux
转换为Mono
。from()它获取flux的第一个元素,如果flux没有发出任何元素,则以空结束。