【问题标题】:Asynchronous Java: How to return this without blocking?异步Java:如何在不阻塞的情况下返回它?
【发布时间】:2019-10-27 06:00:52
【问题描述】:

设置:

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?
    });
}

希望我要完成的工作很明确,只需正确写出即可。如果flag为真我想返回字符串常量,否则以非阻塞方式返回resultMono返回的字符串结果。

【问题讨论】:

  • 也许使用 flatMap 代替 map 并返回 resultMono...?
  • 如果计算结果可能需要阻塞,那么我看不出你如何想象在没有任何阻塞可能性的情况下返回它。但是您也许可以启动一个异步计算并返回一个Future,当它可用时,稍后可以从中获取结果。

标签: java asynchronous reactive-programming spring-webflux project-reactor


【解决方案1】:
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;
    });
}

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2018-12-13
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2022-09-23
    • 2016-07-14
    相关资源
    最近更新 更多