Rai*_*ipe 5 java reactor reactive-programming
是否有一个运算符或一些好的方法可以使用 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))
Run Code Online (Sandbox Code Playgroud)
因此,我正在包装实际值,或者在空的情况下创建空包装器。然后包装纸会因副作用而被消耗。
相反,使用 doOnEmpty(Consumer> signalConsumer) 之类的东西会很好。让事情变得更复杂的是,我需要访问信号才能访问上下文(包含日志记录所需的数据)。
有这些答案,但我认为它们不适用或提供对上下文的访问。
所以现在我想到了这一点,也许正确的问题是:
“有没有办法确定 doOnEach(Consumer Signal ) 是否可观察值解析为空?”
一些实现“Empty Catch”且没有副作用的示例。
Mono.empty()
.doOnSuccess(result -> {
if (result == null) {
// This is an empty result
Logger.info(this.getClass(), "result = {}", result);
}
})
.subscribe();
Run Code Online (Sandbox Code Playgroud)
Mono.empty()
.switchIfEmpty(Mono.error(new Exception()))
.doOnNext(o -> Logger.info(Object.class, "doOnNext"))
.doOnError(Exception.class, error -> Logger.info(Exception.class, "doOnError"))
.subscribe();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1900 次 |
| 最近记录: |