【发布时间】:2020-01-27 15:29:14
【问题描述】:
我希望代码等待 Mono 完成然后收集结果,但它永远不会发生。
为什么?
这是我的代码:
public static void main(String[] args) throws Exception {
Mono<Integer> mono1 = Mono.fromCallable(() -> 1);
Mono<Integer> mono2 = Mono.fromCallable(() -> 2);
List<Mono<Integer>> monos = Arrays.asList(mono1, mono2);
Mono
.when(monos)
.subscribe(__ -> {
int i1 = mono1.block();
int i2 = mono1.block();
System.out.println(i1 + i2);
});
Thread.currentThread().join();
}
【问题讨论】:
-
从不要求在订阅中阻塞,这是一种反模式。您实际上通过执行此操作多次触发可调用对象(一次按时间,一次按块)。
when是关于等待完成,忽略元素及其类型。zip将允许您组合几个 valued 单声道的值。但从你的其他 cmet 看来,你似乎在追求更不同的东西。
标签: java project-reactor