gpt4 book ai didi

java - react 堆项目 : Wait for list of Mono's to complete

转载 作者:行者123 更新时间:2023-11-30 05:18:31 25 4
gpt4 key购买 nike

我期望代码等待 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();
}

最佳答案

您的Mono.when()调用类型为 Mono<Void> - 它只是完成(或者错误,如果它的发布者之一返回错误。)因此永远不会发出元素,因此永远不会调用subscribe() ,因此该订阅 block 中的代码永远不会执行。

目前尚不清楚您到底想在这里发生什么,但最快的“修复”可能是 materialize()在订阅之前,您会得到 onComplete()信号作为元素传播:

Mono
.when(monos)
.materialize()
.subscribe(__ -> {
int i1 = mono1.block();
int i2 = mono1.block();

System.out.println(i1 + i2);
});

请注意,这将打印 2 ,不是3因为 i1i2正在引用mono1 .

关于java - react 堆项目 : Wait for list of Mono's to complete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59934154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com