【发布时间】:2018-08-13 09:13:16
【问题描述】:
我找到了很多关于 RxJava 的答案,但我想了解它在 Reactor 中是如何工作的。
我目前的理解非常模糊,我倾向于认为 map 是同步的,而 flatMap 是异步的,但我无法真正理解它。
这是一个例子:
files.flatMap { it ->
Mono.just(Paths.get(UPLOAD_ROOT, it.filename()).toFile())
.map {destFile ->
destFile.createNewFile()
destFile
}
.flatMap(it::transferTo)
}.then()
我有文件(Flux<FilePart>),我想将它复制到服务器上的某个UPLOAD_ROOT。
这个例子取自一本书。
我可以将所有.map 更改为.flatMap,反之亦然,一切仍然有效。我想知道有什么区别。
【问题讨论】:
-
你能更具体地谈谈你的实际问题吗?您实际指的是哪些方法,Java 中有多个
map和flatMap方法。 -
我说的是 Reactor 项目。 projectreactor.io/docs/core/release/api/reactor/core/publisher/…
-
是的,现在请更具体地说明这个问题。你到底在哪里理解它有困难?为什么不看一下源代码和文档来消除混乱?有什么你不明白的具体内容吗?
-
我从文档中了解到,两者都是迭代给定 Flux 的方法,
map是同步的,flatMap不是。但我也明白我给map的函数是异步执行的,我不知道什么时候用哪个。 -
...我会用一个具体的例子来更新。
标签: java project-reactor