当前位置: 首页 > 知识库问答 >
问题:

如何在不阻塞的情况下转换Mono对象?

燕青青
2023-03-14

假设我有这个方法:

public static Mono<String> getData2() {
    return Mono.just("7");
}

我想调用这个方法,获取字符串,将该字符串转换为整数7,然后以非阻塞方式返回该整数。我该怎么做?

我试过这个,但是map函数阻塞(同步):

public static Mono<Integer> getData1() {
    return getData2().map(data -> Integer.parseInt(data));
}

我尝试使用平面图代替(异步):

public static Mono<Integer> getData1() {
    return getData2().flatMap(data -> Integer.parseInt(data));
}

但是我得到了这个错误:<代码>类型不匹配:无法从int转换为Mono

那我该怎么办?

共有1个答案

潘意
2023-03-14

在Spring反应器中,操作,如Mono。只需单声道。map等都是懒惰的求值。在订阅之前不会发生任何事情。阻塞通常发生在网络调用或资源锁定中。这是另一个概念。如果您想要一个异步的单声道。延迟可能会有所帮助。并且可以使用subscribeOn进行资源隔离。

回到问题,单声道。只是(“7”)。map(Integer::parseInt)只提供一个mono对象。通过异步方式,我们可以将其更改为单声道。延迟(()-

 类似资料:
  • 我有一个存储库,它返回一个流量,并希望将结果设置为另一个需要列表的对象。有没有其他方法可以在不阻塞的情况下以列表的形式获取结果? 这座大楼正在运转,但需要很长时间。

  • getUserDetails方法返回JsonNode类型的Mono。但我真的想退货 但是来自Url的json响应类似于 我尝试了不同的方法,但都不管用。doOnNext(分别为-

  • 问题内容: 我想向服务器发送命令,并确定是否得到响应。 现在,我正在使用的函数,该函数会阻塞直到服务器发出响应,但我要做的就是首先确认服务器是否响应。 我尝试使用或避免此阻止,但这无济于事。 这导致我的程序陷入等待服务器响应的困境,这种情况永远不会发生。根据我对事物的理解,似乎做同样的事情。 我在此处找到的关于该主题的其他问题没有回答我的问题,所以请您回答我的问题会很好。 问题答案: 可能您所需要

  • 我正在使用静态编程语言和Arrow以及来自的WebClient。我想做的是将Mono实例转换为要么。 通过调用

  • 本文向大家介绍什么情况下会出现css阻塞?相关面试题,主要包含被问及什么情况下会出现css阻塞?时的应答技巧和注意事项,需要的朋友参考一下 css阻塞: 将html解析为dom tree 将css解析为cssom tree 将 domtree 与cssom tree 合并生成render tree 浏览器依照render tree开始布局 所以 css阻塞过程在于下载css资源以及解析生成csso

  • 本文向大家介绍什么情况下会出现js阻塞?相关面试题,主要包含被问及什么情况下会出现js阻塞?时的应答技巧和注意事项,需要的朋友参考一下 未在script 使用 async delay 属性且不是body的最后一个标签 ajax 使用了同步