【问题标题】:How to return empty when reducing a flux减少助焊剂时如何返空
【发布时间】:2018-02-03 10:46:11
【问题描述】:

鉴于这个简化的示例代码:

Flux.empty()
  .cast(Integer.class)
  .reduce(Integer.valueOf(1), (i,j) -> i+j)
  .subscribe(System.out::println);

如何实现reduce操作的结果也是空的?

【问题讨论】:

    标签: project-reactor


    【解决方案1】:

    你不能使用这个特定的变体。 Integer.valueOf(1) 的一半目的是提供一个种子,以确保即使源为空也有一个值。

    但是,您可以在没有种子/种子供应商的情况下使用该变体:

    Flux.empty()
      .cast(Integer.class)
      .reduce((i,j) -> i+j)
      .subscribe(System.out::println);
    

    空序列或单值序列将按原样复制(javadoc 可能对此有点不清楚),所以:

    • 上面的代码会产生一个空的Mono
    • Flux.empty().cast(Integer.class) 替换为Flux.just(1) 会生成一个Mono,它会发出1
    • 替换为Flux.just(3, 4) 将产生一个Mono,它发出7

    【讨论】:

    • > 你不能使用这个特定的变体
    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 2015-02-06
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2015-02-11
    相关资源
    最近更新 更多