给定以下单声道:
Mono<Void> mono1 = Mono.fromRunnable(() -> {
System.out.println("sleep1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
System.out.println("mono1");
});
Mono<Void> mono2 = Mono.fromRunnable(() -> {
System.out.println("mono2");
});
Mono<Void> mono3 = Mono.fromRunnable(() -> {
System.out.println("mono3");
});
两个都:
mono1
.then(mono2)
.then(mono3)
.block();
和:
mono1
.and(mono2)
.and(mono3)
.block();
具有相同的输出:
sleep
mono1
mono2
mono3
在这种情况下Mono#then和之间有什么区别?Mono#and
来自https://projectreactor.io/docs/core/release/reference/index.html#which-operator:
[如果你]有一个序列但[你]对值不感兴趣并且[你]想在最后切换到另一个 Mono,[使用] Mono#then(mono)。
[如果你]想通过协调他们从 1 Mono 和任何源到 Mono 的终止来合并发布者,[使用] Mono#and。
#and不幸的是,这并不能帮助我找到一个#then行为不同的案例。
噜噜哒
相关分类