You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Mono的subscribe调用中获取返回值(整数或Mono<int>)?

解决方案:处理Mono并获取结果

一、返回Mono<Integer>(响应式推荐写法)

在Reactor响应式编程中,应保持流的链式调用,不打断响应式流程。使用map操作符转换Mono的值,直接返回包装好结果的Mono<Integer>:

Mono<Integer> resultMono = mono.map(val -> doSomething(val));

map操作符会接收上游Mono发出的val,调用doSomething(val)得到整数后,将其包装为新的Mono<Integer>返回,完全符合响应式编程的非阻塞设计。

二、同步获取整数(不推荐,可能阻塞线程)

如果必须拿到同步的整数结果,可使用block()方法,但这会阻塞当前线程,违背响应式编程的核心原则,仅建议在测试或非响应式适配场景使用:

Integer result = mono.map(val -> doSomething(val)).block();

block()会等待Mono执行完成并返回内部的整数结果;若Mono执行出错,该方法会直接抛出异常,需额外做异常处理。

注意事项

  • 不要试图在subscribe中直接获取返回值:subscribe是终端操作,仅用于触发流执行和消费结果,无法将返回值传递到外部逻辑中。
  • Java泛型不支持基本类型,因此只能使用Mono<Integer>,不能写Mono<int>。

内容的提问来源于stack exchange,提问作者Marco Sulla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:52:41