首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用同步Mono::map还是asycnhronous::flatMap?

我应该使用同步Mono::map还是asycnhronous::flatMap?
EN

Stack Overflow用户
提问于 2020-07-29 22:52:16
回答 1查看 1.1K关注 0票数 1

projectReactor文档说Mono::flatMap是异步的,如下所示。

所以,我可以写我所有的方法来返回这样的Mono出版商。

代码语言:javascript
运行
复制
public Mono<String> myMethod(String name) {
    return Mono.just("hello " + name);
}

并与Mono::flatMap一起使用,如下所示:

代码语言:javascript
运行
复制
Mono.just("name").flatMap(this::myMethod);

这是否使我的方法的执行是异步的?这会使我的代码比使用Mono::map更好、更快吗?对我所有的方法来说,这样做的开销是否太高了?

公共决赛Mono flatMap(Function<?超级T?扩展Mono<?扩展R>>变压器)

异步转换此Mono发出的项,返回由另一个Mono发出的值(可能更改值类型)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 23:29:25

是否使我的方法的执行是异步的?

让我们来看一下Asynchronous的定义:

异步编程是一种并行编程方法,其中一个工作单元独立于主应用程序线程运行,并将其完成、失败或进展通知调用线程。

在这里,您的工作单元是在同一个线程中进行的,除非您使用一个subscribeOn来执行Scheduler。所以这不是异步。

是否使我的代码比仅仅使用Mono::map更有反应性、更好、更快?

不行。由于在本例中,publisher Mono.just("hello " + name)立即通知订阅服务器我已经完成了任务,因此正在处理的线程立即从事件循环中获取该事件并开始处理响应。

相反,这可能在内部导致比简单转换元素的map更多的操作。

因此,理想情况下,当您有I/O操作(如DB调用)或网络调用( Network )时,您应该使用一个flatMap ,如果所有线程都很忙,这可能需要一些时间来执行其他任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63163616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档