gpt4 book ai didi

java - 异步Java : Help flatten my nested Mono

转载 作者:行者123 更新时间:2023-11-30 01:49:23 25 4
gpt4 key购买 nike

设置:

public Mono<Mono<String>> getAsyncResult() { // should return Mono<String>
return Mono.fromSupplier(() -> {
if (stopEarly()) return Mono.just("STOPPED EARLY");

int a = doSyncJob1();
int b = doSyncJob2();
return doAsyncJob(a, b).map(string1 -> toString2(string1));
});
}

现在一切都回来了Mono<Mono<String>> 。如何让它返回Mono<String>没有阻塞?

原因都在里面Mono.fromSupplier()是因为我不需要任务必须阻塞并立即发生,它们可以安排异步运行。也许一种方法是压平里面的东西Mono.fromSupplier()但我不知道如何编写它。

最佳答案

Mono.fromSupplier 替换为 Mono.defer

此外,如果 doSyncJob* 阻塞,那么它们将阻塞订阅者线程。因此,您可能需要在 .defer(...) 之后使用 .subscribeOn(Schedulers.elastic()) 以确保阻塞工作在 中执行调度程序用于阻止工作。

关于java - 异步Java : Help flatten my nested Mono,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56611985/

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