Reactor:检测空信号能够对空Mono起作用

时间:2019-02-26 07:27:34

标签: java reactive-programming reactor

是否有操作员或一些好的方法来使用Project Reactor Mono实现doOnEmpty()的行为?

我希望对操作结果有副作用(记录)。

这就是我现在拥有的:

myMono
  .map(value -> new Wrapped(value))
  .defaultIfEmpty(new Wrapped(null))
  .doOnEach( ... )
  .flatMap(wrapped -> 
    wrapped.value == null ? 
      Mono.empty() : Mono.just(wrapped.value))

因此,我包装了实际值,或者如果为空,则创建空包装器。然后将包装材料用于副作用。

使用诸如doOnEmpty(Consumer> signalConsumer)之类的东西会更好。为了使事情更加复杂,我需要访问Signal才能访问上下文(包含记录所需的数据)。

有这些answers,但我认为它们不适用或不提供对上下文的访问。

现在我想到了,也许合适的问题是:

“是否有一种方法可以确定doOnEach(Consumer Signal)是否可观察结果解析为空?”

1 个答案:

答案 0 :(得分:0)

一些示例实现了“空捕获”而没有副作用。

  • doOnSuccess -被调用且结果为空
data = xr.open_datasets(['dataset.nc','dataset2.nc'])
 
  • switchIfEmpty + doOnError -使用引发和捕获已知异常跳过管道
mean_tss = data.tss.mean()
mean_tss.plot(cmap ='rainbow', vmax = 20.0)