从Flux转换为Mono

Val*_*ahu 15 project-reactor

如何将1个元素的Flux转换为Mono?

Flux.fromArray(arrayOf(1,2,1,1,1,2))
                .distinct()
                .take(1)
Run Code Online (Sandbox Code Playgroud)

我如何使这成为单声道(1)?

Sim*_*slé 30

而不是take(1),你可以使用next().

这将通过获取第一个发射的项目将其Flux转换为值Mono,或者如果Flux本身为空则将其转换为空的Mono.


Ani*_*wat 11

这是一个列表:

  • Flux#single如果有一个元素来自Flux. 例如:flux.take(1).single();

  • Flux#next会给你第一个元素。例如:flux.next();

  • Flux#last对于最后一个元素。例如:flux.last();

  • Flux#singleOrEmpty类似于Optional. 例如:flux.take(0).singleOrEmpty();

  • Flux#collect,这取决于用例。

    flux.collect(Collectors.reducing((i1, i2) -> i1))
        .map(op -> op.get());
    
    Run Code Online (Sandbox Code Playgroud)
  • Flux#elementAt对于第 i 个索引。例如:flux.elementAt(1);

  • Flux#publishNext 对于第一个找到的元素。 flux.publishNext();

  • Flux#reduce减少操作。例如:flux.reduce((i1,i2) -> i1);