异步Java:如何在不阻塞的情况下返回它?

异步Java:如何在不阻塞的情况下返回它?,java,asynchronous,reactive-programming,spring-webflux,project-reactor,Java,Asynchronous,Reactive Programming,Spring Webflux,Project Reactor,设置: public Mono-getResult(Mono-flagMono,Mono-resultMono){ 返回flagMono.map(标志->{ 如果(标志)返回“标志为真,跳过结果”; return resultMono.block();//如何避免阻塞? }); } 我希望,我想要完成的事情是明确的,只是把它正确地写出来。如果flag为true,我希望返回字符串常量,否则以非阻塞方式返回resultMono返回的字符串结果。public Mono getResult(Mono-

设置:

public Mono-getResult(Mono-flagMono,Mono-resultMono){
返回flagMono.map(标志->{
如果(标志)返回“标志为真,跳过结果”;
return resultMono.block();//如何避免阻塞?
});
}
我希望,我想要完成的事情是明确的,只是把它正确地写出来。如果
flag
为true,我希望返回字符串常量,否则以非阻塞方式返回
resultMono
返回的字符串结果。

public Mono getResult(Mono-flagMono,Mono-resultMono){
public Mono<String> getResult(Mono<Boolean> flagMono, Mono<String> resultMono) {
    return flagMono.map(flag -> {
        if (flag) return "FLAG IS TRUE, SKIP RESULT";
        return resultMono.block(); // how to do without blocking?
    });
}
返回flagMono.flatMap(标志->{ 如果(标志)返回Mono.just(“标志为真,跳过结果”); 返回结果单; }); }
公共Mono-getResult(Mono-flagMono,Mono-resultMono){
返回flagMono.flatMap(标志->{
如果(标志)返回Mono.just(“标志为真,跳过结果”);
返回结果单;
});
}

可能使用flatMap而不是map并返回resultMono…?如果计算结果可能需要阻塞,那么我不明白您如何想象在没有任何阻塞可能性的情况下返回结果。但是你可以启动一个异步计算,然后返回一个
未来的
,当结果可用时可以从中获得结果。也许可以使用flatMap而不是map并返回resultMono…?如果计算结果可能需要阻塞,那么我看不出你如何想象在没有任何阻塞可能性的情况下返回它。但您可能会启动一个异步计算,并返回一个
Future
,当它可用时,可以从中获得结果。
public Mono<String> getResult(Mono<Boolean> flagMono, Mono<String> resultMono) {
    return flagMono.flatMap(flag -> {
        if (flag) return Mono.just("FLAG IS TRUE, SKIP RESULT");
        return resultMono;
    });
}