【发布时间】:2020-01-12 04:56:48
【问题描述】:
即使我的流不为空,也总是会创建备用流?这样做的目的是什么?这是非常不习惯的。
另一方面,.onErrorResume 的评估是惰性的。
有人可以向我解释为什么 .switchIsEmpty 会被热切评估吗?
代码如下:
public static void main(String[] args) {
Mono<Integer> m = Mono.just(1);
m.flatMap(a -> Mono.delay(Duration.ofMillis(5000)).flatMap(p -> Mono.empty()))
.switchIfEmpty(getFallback())
.doOnNext(a -> System.out.println(a))
.block();
}
private static Mono<Integer> getFallback() {
System.out.println("In Here");
return Mono.just(5);
}
输出是:
In Here (printed immediately)
5 (after 5s)
【问题讨论】:
-
您可能犯了在返回
switchIfEmpty使用的流之前进行初始化的错误。请提供您遇到问题的代码。 -
@akarnokd 我已经添加了代码。谢谢。
-
如果你只在
main中写getFallback();而没有switchIfEmpty和其他结构会怎样?为什么? -
方法在主线程上执行?看起来我缺少一些基本的东西。
标签: java reactive-programming project-reactor reactive